84570091 2019-06-26
mongoose连接mongodb数据库mongodb数据库有很多种方法,通过mongoose模块引入是其中的一个方法|---|根目录 |---|---|connect.js(mongoose测试连接) |---|---|user.js(定义user数据表) |---|---|operate.js(定义mongodb的增删改查功能) |---|---|login.js(Node后台调用operate.js文件的方法处理数据)
mongoose测试连接mongoose版本为4.13.7connect.jsconst mongoose = require("mongoose");
const DB_URL = "mongodb://127.0.0.1:27017/infos";
mongoose.Promise = global.Promise;
mongoose.connect(DB_URL, { useMongoClient: true });
mongoose.connection.on("connected", () => {
console.log("mongodb数据库连接成功")
});
mongoose.connection.on("error", (error) => {
console.log("mongodb数据库连接失败", error)
});
module.exports = mongoose;mongoose模块const mongoose = require("mongoose");mongodb的本机地址const DB_URL = "mongodb://127.0.0.1:27017/infos";127.0.0.1是本地IP地址27017是mongodb的服务启动端口infos是mongodb的一个数据集合名字
mongodb可以有很多数据集合,每个集合中可以有很多数据表。mongodb),里边分了不同的停车区(集合,这里的infos),每个停车区可以停很多车((下文提到的user),相当于每个数据集合里边可以有很多张数据表)。如果需要给mongodb加上用户及密码,可以这样
const DB_URL = "mongodb://username:[email protected]:27017/infos";username为用户名,中间英文:,password为密码,其余不变mongoose.connection.on("connected", callback())mongodb数据库连接成功mongoose.connection.on("error", callback())mongodb数据库连接失败和错误信息mongoose模块module.exports = mongoose;user.jsconst mongoose = require('mongoose');
const db = require('./connect.js');
const userSchema = new mongoose.Schema({
number: { type: Number},
email: { type: String },
password: { type: String },
rePassword: { type: String },
mobile: { type: String },
question: { type: String },
answer: { type: String },
});
let userModel = db.model('user', userSchema);
module.exports = userModel;mongoose模块const mongoose = require("mongoose");mongodb数据库的模块const db = require('./connect.js');Schemaconst userSchema = new mongoose.Schema({})mongoose对象的Schema属性创建一个Schema对象Schema原意为架构mongodb中,每一个数据字段都要有固定的数据类型,所以Schema在mongoose中的意思为,每一张数据表对应的字段的数据类型Schema所能够拥有的数据类型有以下几个
StringNumberDateBufferBooleanMixedObjectIdArray字段介绍,以Number字段为例
type是该字段的数据类型default是该字段的默认值let userModel = db.model('user', userSchema);userModeldb.model方法,第一个参数是数据表的名字,第二个参数是该数据表使用的Schemamodule.exports = userModel;operate.js中使用这个对象的mongodb的增删改查方法mongodb的增删改查功能operate.jslet userModel = require('./user.js');
module.exports = {
save(data) {
return new Promise((resolve, reject) => {
userModel.create(data, (err, docs) => {
if (err) {
rejct(err);
} else {
resolve(docs);
}
})
})
},
find(data = {}, fields = null, options = {}) {
return new Promise((resolve, reject) => {
//model.find(需要查找的对象(如果为空,则查找到所有数据), 属性过滤对象[可选参数], options[可选参数], callback)
userModel.find(data, fields, options, (error, doc) => {
if (error) {
reject(error)
} else {
resolve(doc)
}
})
})
},
findOne(data) {
return new Promise((resolve, reject) => {
//model.findOne(需要查找的对象,callback)
userModel.findOne(data, (error, doc) => {
if (error) {
reject(error)
} else {
resolve(doc)
}
})
})
},
findById(data) {
return new Promise((resolve, reject) => {
//model.findById(需要查找的id对象 ,callback)
userModel.findById(data, (error, doc) => {
if (error) {
reject(error)
} else {
resolve(doc)
}
})
})
},
update(conditions, update) {
return new Promise((resolve, reject) => {
//model.update(查询条件,更新对象,callback)
userModel.update(conditions, update, (error, doc) => {
if (error) {
reject(error)
} else {
resolve(doc)
}
})
})
},
remove(conditions) {
return new Promise((resolve, reject) => {
//model.update(查询条件,callback)
userModel.remove(conditions, (error, doc) => {
if (error) {
reject(error)
} else {
resolve(doc)
}
})
})
}
};user模块let userModel = require('../models/users');userModel这个数据表直接的调用mongodb的各种方法operate处理数据login.jsconst express = require('express');
const router = express.Router();
let operate = require('./operate');
router.post('/', function (req, res, next) {
let param = {};
param.email = req.body.email;
param.password = req.body.password;
console.log(param);
operate.save(param).then(result => {
if (result) {
res.json({
data: result,
success: true
})
} else {
res.json({
data: result,
success: false
})
}
});
});
module.exports = router;Express的router方法Express,定义一个post方法post方法传递的对象数据挂在在req.body上operate.save()方法,传递param对象参数result,对获取到的结果进行进一步处理