特点
npm i mongoose --save
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
// 如果有账户密码需要采用下面的连接方式:
mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms');
var UserSchema=mongoose.Schema({name: String, age:Number, status:'number' })
var User=mongoose.model('User', UserSchema); // 此时会找users表
var User=mongoose.model('User', UserSchema, 'user'); // 此时会找user表
User.find({},function(err,docs){
if(err){
console.log(err);
return;
}
console.log(docs);
})
var u=new User({
//实例化模型 传入增加的数据
name:'lisi2222333', age:20, status:true
})
u.save();
// 一般通过id来获取数据,确保唯一性,此处只做演示
User.updateOne({ name: 'lisi2222' }, { name: '哈哈哈' }, function(err, res) {
if(err){
console.log(err);
return;
}
console.log('成功')
});
User.deleteOne({ _id: '5b72ada84e284f0acc8d318a' }, function (err) {
if (err) {
console.log(err);
return;
}
// deleted at most one tank document
console.log('成功');
});
var u=new User({
name:'lisi2222333', age:20, status:true //类型转换
})
u.save(function(err,docs){
if(err){
console.log(err);
return;
}
//console.log(docs);
User.find({},function(err,docs){
if(err){
console.log(err);
return;
}
console.log(docs);
})
});
const mongoose = require('mongoose');
mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms', {useNewUrlParser: true}, function(err) {
if(err) {
console.log(err);
return;
}
console.log('conc suc');
});
{useNewUrlParser: true}
参数用于识别用户所需db,未升级前无需指定,升级后需指定, 是 MongoDB V3.1.0 之后新加的API// 定义的Schema一定要和数据库表对应起来,如果不对应起来, 那么不会执行错误的信息,这里给status指定默认参数
const UserSchema=mongoose.Schema({name: String, age:Number, status:{type: Number, default: 1}})
const User=mongoose.model('User', UserSchema, 'user'); // 此时会找user表
// 这里没写status属性,因为有默认参数
var user = new User({
name:'lisi2222333', age:20
})
在eggjs中模块化Mongoose使用
在app/model中,编写db.js
'use strict';
const mongoose = require('mongoose');
mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms', { useNewUrlParser: true }, function(err) {
if (err) {
console.log(err);
return;
}
console.log('conc suc');
});
module.exports = mongoose;
在app/model中,添加user.js数据模型
// 配置schema和数据模型
'use strict';
const mongoose = require('./db.js');
const UserSchema = mongoose.Schema({
name: String,
age: Number,
status: {
type: Number,
default: 1,
}});
module.exports = mongoose.model('User', UserSchema, 'user');
这样封装好之后,以后要用user,直接导入user模块即可!
如果有多个模块,比如news.js也可以这样封装
另外Mongoose底层类似单例模式,不会重复多次连接