NodeJS连接到MongoDB

mongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 -来自维基百科

我们本地先安装配置mongoDB,然后启动mongoDB服务

启动后默认端口为 27017

image

1.创建数据库(名为mall)

mongo控制台输入 use mall

我们只创建一个数据库的话,默认还是没有这个数据库的, 还需要创建表(集合)

2.创建数据库表

db.createCollection(goods) (创建goods表)

当然我们可以也可以自己导入本地数据库表

mongoimport -d mall -c goods --file /User/db/goods

-d代表database, 既数据库名称。-c 代表数据库集合,代表了goods这张表, 后面 –ff 加文件地址

导入完成后 ,数据库中就有goods这张表和名为mall的数据库了。

3.我们使用nodejs 的第一方框架 express 搭建一个名为mall模板项目。

express mall

4.安装mongoose并设置表数据映射关系

 Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具  

控制台输入 npm i mongoose --save

在项目中新建一个models文件夹, 创建goods.js文件,用来存放对应的数据关系表

goods.js

//引入mongoose
var mongoose = require('mongoose')

//定义商品表模型
var Schema = mongoose.Schema;
var produtSchema = new Schema({
"productId":{type:String},
"productName":String,
"salePrice":Number,
"checked":String,
"productNum":Number,
"productImage":String
});
// 将Good模型(produtSchema)输出 Good对应了mongoDB中的goods这张表 --- 注意, mongoose.model 第一个参数必须要是mongoDB对应的表,并且要大写, 不能加s , 如下文中的Good
module.exports = mongoose.model('Good',produtSchema);

5.创建表路由,连接到本地的mongoDB服务

var express = require('express');
var router = express.Router();
// 引入mongoose
var mongoose = require('mongoose');
// 引入goods模块
var Goods = require('../models/goods');

//连接MongoDB指定的数据库
mongoose.connect('mongodb://127.0.0.1:27017/mall');

// 连接成功
mongoose.connection.on("connected", function () {
console.log("MongoDB connected success.")
});
// 连接失败
mongoose.connection.on("error", function () {
console.log("MongoDB connected fail.")
});
// 连接断开
mongoose.connection.on("disconnected", function () {
console.log("MongoDB connected disconnected.")
});

router.get("/", function (req, res, next) {

Goods.find({},function (err, doc) {
//请求失败 ,返回错误信息
if (err) {
res.json({
status: '1',
msg: err.message
})
//请求成功
} else {
res.json({
status: '0',
msg: '',
result: {
count: doc.length,
list: doc
}
})
}
})
})

module.exports = router

4. 在app.js中配置goods路由

var goodsRouter = require('./routes/goods');

-----------------
-----------------

app.use('/goods', goodsRouter);

启动该项目,浏览器URL输入 localhost:3000/goods/ 访问到goods路由

如果连接成功并且显示到正确的数据,既表示数据库连接成功并且已经返回数据接口

image

(完)

分享到