版权声明:转载请注明出处! https://blog.csdn.net/qq_42303885/article/details/86171147
网上有很多mongoose的帖子了,为什么我还要写这篇博客,因为无法复用啊,当然了他们肯定的懂的啦。
新建db.js,里面主要是数据库的连接和断开,以及返回数据。consts.js是参数文件。
var mongoose = require('mongoose');
var dbUrl = 'mongodb://localhost:27017/tt';
var consts = require('../consts');
//断开数据库连接
function end(res, msg) {
mongoose.disconnect(() => {
if(typeof msg === 'string') {
res.json(consts(msg));
} else {
//如果是个对象
res.json(msg);
}
});
}
//连接数据库
function connect(res) {
mongoose.connect(dbUrl, {useNewUrlParser: true});
//连接失败
mongoose.connection.on('error', () => {
end(res, 'connectError');
});
}
module.exports = {
end, connect
}
新建userInfo.js,里面是Schema和Model
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
username: {
type: String
},
password: {
type: String
}
});
module.exports = mongoose.model('UserInfo', userSchema);
应用
比如说注册,先引入上面那两个js文件。
var db = require('../../db/db');
var UserInfo = require('../../db/userInfo');
module.exports = (req, res) => {
db.connect(res);
var username = req.body.username;
var password = req.body.password;
var userInfo = new UserInfo({
username,
password
});
userInfo.save((err) => {
if (err) {
db.end(res, 'saveError');
} else {
db.end(res, 'success');
}
})
}
比如说登录。
var db = require('../../db/db');
var UserInfo = require('../../db/userInfo');
module.exports = (req, res) => {
db.connect(res);
var username = req.body.username;
var password = req.body.password;
UserInfo.find({
username,
password
}, (err, doc) => {
if (err) {
db.end(res, 'findError');
} else {
if (Object.keys(doc).length) {
req.session.username = username;
return db.end(res, {
error: 0,
data: {
username
}
});
}
db.end(res, 'noUser');
}
})
}
比如说注册时核查用户名是否被占用。
var db = require('../../db/db');
var UserInfo = require('../../db/userInfo');
module.exports = (req, res) => {
db.connect(res);
var username = req.body.username;
UserInfo.find({
username
}, (err, doc) => {
if (err) {
db.end(res, 'findError');
} else {
if (Object.keys(doc).length) {
return db.end(res, 'hasUser');
}
db.end(res, 'usernameIsOK');
}
})
}
mongoose提供了很多API,详情见 => https://cn.mongoosedoc.top/docs/api.html#Model