mongoose 文档(九) Plugins

插件

schema是可插入的,即,它们可以应用预包装的能力,从而扩展其功能。这是一个非常强大的功能。

假设我们有几个collection在我们的数据库中,要添加的 last-modified功能给它们。用插件会很容易。只需创建一个插件,并把它应用到每个Schema:

// lastMod.js
module.exports = exports = function lastModifiedPlugin (schema, options) {
  schema.add({ lastMod: Date })

  schema.pre(‘save‘, function (next) {
    this.lastMod = new Date
    next()
  })

  if (options && options.index) {
    schema.path(‘lastMod‘).index(options.index)
  }
}

// game-schema.js
var lastMod = require(‘./lastMod‘);
var Game = new Schema({ ... });
Game.plugin(lastMod, { index: true });

// player-schema.js
var lastMod = require(‘./lastMod‘);
var Player = new Schema({ ... });
Player.plugin(lastMod);

我们刚刚增加last-modified特性到Game和Player schema并声明一个索引到Game的lastMod path来引导。

全局插件

想注册一个给所有shcema的插件?mongoose单例模式的plugin() 函数能给所有schema注册一个插件。 例如:

var mongoose = require(‘mongoose‘);
mongoose.plugin(require(‘./lastMod‘));

var gameSchema = new Schema({ ... });
var playerSchema = new Schema({ ... });
// `lastModifiedPlugin` gets attached to both schemas
var Game = mongoose.model(‘Game‘, gameSchema);
var Player = mongoose.model(‘Player‘, playerSchema);
时间: 2024-10-12 16:27:59

mongoose 文档(九) Plugins的相关文章

mongoose 文档(四) queries

通过一些model的静态辅助方法可以检索document. 任何 涉及 指定 查询 条件的 model 方法都能通过两个方法执行. 当一个回调函数: 被传递,操作将立即执行,结果传给回调. 没有被传递,返回一个 查询 实例,它提供一个特殊的查询生成接口. 在mongoose 4,Query有 then()函数,因此可以被用来作为一个 promise. 用回调函数执行查询时,将请求指定为JSON 文档.JSON文档的语法和 MongoDB shell 一样. var Person = mongoo

mongoose 文档(二)Models

Models是从 Schema 定义编译的构造函数.这些 model 的实例代表能从数据库存储和检索的 documents.数据库中所有document的创建和检索都是这些model处理的. 1.编译第一个model var schema = new mongoose.Schema({ name: 'string', size: 'string' }); var Tank = mongoose.model('Tank', schema); 第一个参数是 model 对应的 collection

mongoose 文档(七) Population

在mongoose中没有join但有时我们仍然想引用其他collection的document,population由此而来. population是自动将document中指定path替换为其他collection的document的过程.我们能迁移document.多个document.简单对象.多个简单对象或者是查询返回的所有对象. var mongoose = require('mongoose') , Schema = mongoose.Schema var personSchema

mongoose 文档(八) Connections

我们可以通过利用mongoose的connect()方法连接到MongoDB . mongoose.connect('mongodb://localhost/myapp'); 这是在默认端口(27017)连接到在本地运行的myapp数据库的最低需要.如果本地连接失败那么尝试使用127.0.0.1代替localhost.当本地主机名改变有时会出现问题. 我们也能根据你的环境指定URI中的几个参数. mongoose.connect('mongodb://username:[email protec

mongoose 文档(一) schemas

1.定义shcema 在mongoose里一切都由schema开始.每一个schema对应一个mongoDB collection 并且在那个collection里面定义了documents的模型. var mongoose = require('mongoose'); var Schema = mongoose.Schema; var blogSchema = new Schema({ title: String, author: String, body: String, comments:

mongoose 文档(十) Promises

Built-in Promises Mongoose 异步操作,像 .save() 和 queries,返回 Promises/A+ conformant promises. This means that you can do things like MyModel.findOne({}).then() and yield MyModel.findOne({}).exec() (if you're using co). 这就是说你可以做一些像MyModel.findOne({}).then()

Mongoose学习参考文档——基础篇

Mongoose学习参考文档 前言:本学习参考文档仅供参考,如有问题,师请雅正 一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entity : 由Model创建的实体,他的操作也会影响数据库 注意: 1.本学习文档采用严格命名方式来区别不同对象,例如: var PersonSchema; //Person的文本属性 var PersonModel; //

mongoose学习文档

名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 来自cnode社区 1.创建一个本地数据库并连接: var mongoose = require('mongoose'); //获取mongoose模块 mongoose.connect('mongodb://localhost/nodejs'); //使用mongoose对象的connect方法连接数据库nodejs 2.定义数

《Javascript权威指南》学习笔记之十九--HTML5 DOM新标准---处理文档元信息和管理交互能力

一.了解DOM 1.DOM是Document Object Model的缩写,即文档对象类型,是文档在内存中的表示形式,是一个应用程序接口,定义了文档的逻辑结构以及一套访问和处理文档的方法. 2.HTML DOM与Core DOM的区别:前者提供了大量的方法和属性,与现有的程序模型一致,更便于脚本的编写者控制. 二.document对象 使用window.document属性返回一个document对象,代表当前window内加载的文档.window可以省略.winName.document返回