Mongoose MongoDB 异步模型工具开源项目

我要开发同款
匿名用户2021年12月09日
86阅读
开发技术JavaScript
所属分类数据库相关、数据库建模
授权协议MIT

作品详情

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});
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论