node.js之mongoose的使用

34次阅读

共计 1900 个字符,预计需要花费 5 分钟才能阅读完成。

概念
Mongoose 是一个对象文档模型(ODM)库,它对 Node 原生的 MongoDB 模块进行了进一步的优化封装,并提供了更多的功能。mongoose 的优势在于:

可以为文档创建一个模式结构(Schema)。
可以对模型中的对象 / 文档进行验证。
数据可以通过类型转换转换为对象模型。
可以使用中间件来应用业务逻辑挂钩。
比 Node 原生的 MongoDB 驱动更容易。

Mongoos 的几个对象概念:

Schema(模式对象):Schema 对象定义约束了数据库中的文档结构
Model:Model 对象作为集合中的所有文档的表示,相当于 MongoDB 数据库中的集合 collection
Document: Document 表示集合中的具体文档

mongoose 安装
npm i mongoose –save 关于 npm install、npm install –save 的区别来自于 https://blog.csdn.net/qq_3037…
mongoose 基本操作
引入 mongoose
let mongoose = require(“mongoose”);
连接数据库
mongoose.connect(‘mongodb://user:pwd@ip:27017/database’);
事件监听
let db = mongoose.connection;

db.on(‘error’,()=>{
console.log(‘ 连接失败 ’);
});

db.once(‘open’,()=>{
console.log(‘ 连接成功 ’);
});

db.once(‘close’,()=>{
console.log(‘ 断开连接 ’);
});
schema 和 model
let Schema = mongoose.Schema;

let personSchema = new Schema({
name:String,
age:Number,
sex:{
type:String,
default:”F”
}
});
关于 schema 的学习来自于:

关于数据库 schema:https://www.cnblogs.com/csnip…

关于 mongoose 的 schema:https://www.jianshu.com/p/9ff…

let personModel = mongoose.model(“persion”,personSchema);
crud 操作
因为我在启动 mongodb 时加了 –auth 参数,插入操作是需要验证用户权限。
db.createUser({
user: “test01”,
pwd: “test01”,
roles: [{role: “readWrite”, db: “test”}]
})
// 插入操作
/*personModel.create({
name:”t01″,
age:22
},(err)=>{
if(!err){
console.log(“ 插入成功 ”);
}else{
throw err;
}
});*/

// 修改操作
//update 报错:DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead.,改成 updateOne
/*personModel.updateOne({_id:”5c2d7c0bda87713ff850c6ea”},{$set:{name:”t02″}},(err)=>{
if(err){
throw err;
}
});*/

/*personModel.updateOne({_id:”5c2d7af402a3462c7c212b58″},{$set:{name:”t01″}},(err)=>{
if(err){
throw err;
}
});*/

// 查找
/*personModel.find({},(err,docs)=>{
if(!err){
console.log(docs);
}else{
throw err;
}
});*/

/*personModel.find({name:”t01″},(err,docs)=>{
if(!err){
console.log(docs);
}else{
throw err;
}
});*/

/*personModel.find({},”name age _id”,{skip:1,limit:2},(err,docs)=>{
if(!err){
console.log(docs);
}else{
throw err;
}
});*/

// 删除
/*personModel.remove({name:”t03″},(err)=>{
if(!err){
console.log(“ 删除成功 ”);
}
});*/

正文完
 0