Mongoose是设计用于异步环境的MongoDB对象模型工具,支持promises和callbacks。
概述连接到MongoDB首先需要定义一个连接。如果应用仅使用一个数据库,则使用mongoose.connect。如果需要创建其他连接,请使用mongoose.createConnection。
connect 和 createConnection都使用 mongodb://URI,或者 host,database,port,options参数。
awaitmongoose.connect('mongodb://localhost/my_database');连接后,open将在Connection实例上触发该事件。
注意: 如果本地连接失败,请尝试使用127.0.0.1而不是localhost,更改本地主机名可能会出现问题。
Mongoose会缓冲所有命令,直到它连接到数据库,这意味着不必等到它连接到MongoDB才开始定义模型、运行查询。
定义模型模型是通过Schema接口定义的:
constSchema=mongoose.Schema;constObjectId=Schema.ObjectId;constBlogPost=newSchema({author:ObjectId,title:String,body:String,date:Date});除了定义文档的结构和存储的数据类型之外,Schema还处理以下定义:
验证器(异步和同步)默认值GettersSetters索引中间件方法定义静态定义插件pseudo-JOINs以下是上述功能的一些用法:
constComment=newSchema({name:{type:String,default:'hahaha'},age:{type:Number,min:18,index:true},bio:{type:String,match:/[a-z]/},date:{type:Date,default:Date.now},buff:Buffer});//asetterComment.path('name').set(function(v){returncapitalize(v);});//middlewareComment.pre('save',function(next){notify(this.get('email'));next();});查看examples/schema/schema.js示例中的典型设置端到端示例。
访问模型一旦我们通过 mongoose.model('ModelName',mySchema)定义了一个模型,就可以通过相同的函数访问它:
constMyModel=mongoose.model('ModelName');或者一次性完成:
constMyModel=mongoose.model('ModelName',mySchema);第一个参数是模型所针对的集合的单数名称。Mongoose会自动查找模型名称的复数形式。例如:
constMyModel=mongoose.model('Ticket',mySchema);Mongoose会为 tickets 集合建立模型,而不是 ticket集合。
一旦我们有了模型,就可以实例化并保存它:
constinstance=newMyModel();instance.my.key='hello';instance.save(function(err){//});可以从同一个集合中找到文档
MyModel.find({},function(err,docs){//docs.forEach});
评论