express框架项目连接MongoDB
一、安装mongoose模块
在项目下执行命令 npm install mongoose -save 安装保存到node_modules
也可以在package.json中配置"mongoose": “^4.4.12”,然后命令npm install 安装。https://github.com/Automattic/mongoose
二、配置
1.app.js
在app.js文件中
(1)导入
导入mongoose模块:
const mongoose = require(‘mongoose’);
(2)连接
// 创建数据库连接
mongoose.connect('mongodb://localhost:27017/text') //连接本地数据库
// 数据库地址: 'mongodb://用户名:密码@ip地址:端口号/数据库';
// mongodb : 'mongodb://cha:root@localhost:27017/test'
// 实例化连接对象
let db = mongoose.connection;
db.on('error', console.error.bind(console, '连接错误:'));
db.once('open', (callback) => {
console.log('MongoDB连接成功!!');
});
2.建立数据集模块
在项目根目录下新建文件夹schemas,这个是数据集模块,在模块下新建users.js文件
const mongoose = require('mongoose');
//申明一个mongoons对象
const UsersSchema = new mongoose.Schema({
// 定义要接收的字段
name: String,
password: String,
meta: {
createAt: {
type: Date,
default: Date.now() // 设置default可在数据库中没有值时传递默认值
},
updateAt: {
type: Date,
default: Date.now()
}
}
})
//每次执行都会调用,时间更新操作
UsersSchema.pre('save', function(next) {
if(this.isNew) {
this.meta.createAt = this.meta.updateAt = Date.now();
}else {
this.meta.updateAt = Date.now();
}
next();
})
//查询的静态方法
UsersSchema.statics = {
fetch: function(cb) { //查询所有数据
return this
.find()
// .sort('meta.updateAt') //排序
.exec(cb) //回调
},
findById: function(id, cb) { //根据id查询单条数据
return this
.findOne({_id: id})
.exec(cb)
}
}
//暴露出去的方法
module.exports = UsersSchema
3.建立数据模型模块
const mongoose = require('mongoose')
const UsersSchema = require('../schemas/users') //拿到导出的数据集模块
const Users = mongoose.model('user', UsersSchema) // 编译生成Movie 模型 其中'user' 对应数据集合test下的users表
console.log(Users);
module.exports = Users
4.新建路由提供调用
在routes文件中的js文件中添加路由控制器代码,我是自定义一个demo.js
自定义route记得在app.js中引入
var demoRouter = require('./routes/demo');
app.use('/demo', demoRouter);
在demo.js中写入:
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');//导入mongoose模块
const users = require('../models/users');//导入模型数据模块
// 获取MongoDB数据库数据
router.get('/users', function (req, res) {
users.fetch(function (err, users) {
if (err) {
console.log(err);
}
console.log(users);
res.status(200).send(users)
})
})
//
router.get('/getOne', function (req, res) {
users.findById('5f7be3ea52f8abd63742c518',function (err, users) {
if (err) {
console.log(err);
}
res.status(200).send(users)
})
})
//导出整个页面
exports = module.exports = router;
三、连接完成
浏览器访问对应route路径:
http://localhost:3000/demo/users
得到结果: