MongooseMongoDB 异步模型工具
Mongoose 是设计用于异步环境的 MongoDB 对象模型工具,支持 promises 和 callbacks。
概述
连接到 MongoDB
首先需要定义一个连接。如果应用仅使用一个数据库,则使用mongoose.connect
。如果需要创建其他连接,请使用mongoose.createConnection
。
connect
和 createConnection
都使用 mongodb://
URI,或者 host, database, port, options
参数。
await mongoose.connect('mongodb://localhost/my_database');
连接后,open
将在Connection
实例上触发该事件。
注意: 如果本地连接失败,请尝试使用 127.0.0.1 而不是 localhost,更改本地主机名可能会出现问题。
Mongoose 会缓冲所有命令,直到它连接到数据库,这意味着不必等到它连接到 MongoDB 才开始定义模型、运行查询。
定义模型
模型是通过 Schema 接口定义的:
const Schema = mongoose.Schema;
const ObjectId = Schema.ObjectId;
const BlogPost = new Schema({
author: ObjectId,
title: String,
body: String,
date: Date
});
除了定义文档的结构和存储的数据类型之外,Schema 还处理以下定义:
以下是上述功能的一些用法:
const Comment = new Schema({
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
});
// a setter
Comment.path('name').set(function (v) {
return capitalize(v);
});
// middleware
Comment.pre('save', function (next) {
notify(this.get('email'));
next();
});
查看examples/schema/schema.js
示例中的典型设置端到端示例。
访问模型
一旦我们通过 mongoose.model('ModelName', mySchema)定义了一个模型,就可以通过相同的函数访问它:
const MyModel = mongoose.model('ModelName');
或者一次性完成:
const MyModel = mongoose.model('ModelName', mySchema);
第一个参数是模型所针对的集合的单数名称。Mongoose 会自动查找模型名称的复数形式。例如:
const MyModel = mongoose.model('Ticket', mySchema);
Mongoose 会为 tickets 集合建立模型,而不是 ticket 集合。
一旦我们有了模型,就可以实例化并保存它:
const instance = new MyModel();
instance.my.key = 'hello';
instance.save(function (err) {
//
});
可以从同一个集合中找到文档
MyModel.find({}, function (err, docs) {
// docs.forEach
});
评论
libafdt异步文件传输工具
libafdt是通过执行libevent(异步事件处理库)创建异步文件传输描述符的开发工具。它只能在Linux平台上面进行测试。它提供了一个简单的页面来建立Unixdomainsocket来接收来自l
libafdt异步文件传输工具
0
Async.js异步 JS 工具
Async是一个工具模块,提供了直接而强大的JavaScript异步功能。虽然是为Node.js设计的,但是它也可以直接在浏览器中使用。Async提供了大约20个函数,包括map,reduce,fil
Async.js异步 JS 工具
0
UniModUML模型工具
UniMod是ExecutableUML思想的实现。UniMod是以Eclipse插件形式存在。可以通过UniMod提供的一个在线Demo了解更多的详细资料。
UniModUML模型工具
0