mongoose再认识(三)

作者: 缘自世界 | 来源:发表于2019-01-06 18:50 被阅读13次

今天,说一个常见的知识点插件。对于不熟悉mongoose的人可能会问mongoose中也有插件?这个别说还真的有。

那么,在mongoose中的插件如何使用?

mongoose插件的使用

它和通常用的JavaScript的插件一样,都是为了实现代码的重用。

mongoose再认识(二)中介绍的方法类似。可以在Schema的实例上添加。

首先,介绍一个api schema.add(),这个方法可以实现对Schema的扩充。

那么,可以紧接着mongoose再认识(二)中的代码来说,修改它的代码如下:

let UserSchema = new mongoose.Schema({
  firstname: String,
  lastname: String
})

UserSchema.add({
  createAt: {
    type: Date,
    default: Date.now
  },
  updateAt: {
    type: Date,
    default: Date.now
  }
})

UserSchema.pre('save', function(next) {
  let now = Date.now()
  this.updateAt = now;

  if (!this.createAt) this.createAt = now;
})

createAtupdateAt的代码提取出来,因为在开发中,很多collection都需要它们,同样也可能需要用到它的处理方法。所以,用一个插件将它们封装起来变得很有必要。可参考如下代码:

module.exports = function(schema) {
  schema.add({
    createAt: {
      type: Date,
      default: Date.now
    },
    updateAt: {
      type: Date,
      default: Date.now
    }
  })

  schema.pre('save', function(next) {
    let now = Date.now()
    this.updateAt = now;

    if (!this.createAt) this.createAt = now;
  })
}

文件名为time-plugin.js

然后,在使用它的UserSchema定义中引用它。代码如下:

let UserSchema = new mongoose.Schema({
  firstname: String,
  lastname: String
})

let timePlugin = require('../plugins/time-plugin.js)

userSchema.plugin(timePlugin)

cnode-club的源码中定义了一个base_model.js文件,这个文件分别在topic.jsuser.js等文件中进行了引用。

mongoose系列文章

相关文章

  • mongoose再认识(三)

    今天,说一个常见的知识点插件。对于不熟悉mongoose的人可能会问mongoose中也有插件?这个别说还真的有。...

  • mongoose常用操作

    认识mongoose Mongoose是什么?Mongoose是MongoDB的一个对象模型工具,是基于node-...

  • mongoose简单认识

    要学mongoose必须要会mongodb和nodejs 比较简单的一个例子,可以作为入门指导

  • Node操作mongodb

    一、下载Node的数据库三方包(mongoose) npm install mongoose 二、查询 三、删除 ...

  • 32 - mongoose的基本认识和使用

    Mongoose的基本认识Mongoose是封装了mongodb的一个框架,可以通过操控对象让数据持久化(增删查改...

  • koa2连接使用mongoose

    步骤一:npm mongoose 步骤二:引入mongoose配置 步骤三:连接数据库

  • mongoose再认识(二)

    在开发中,除了使用mongoose进行一些基本的操作外,就是一些技巧的使用。 文章接续mongoose再认识(一)...

  • mongoose 再认识(一)

    mongoose 是一个ODM(Object Data Model)的库,也叫做对象数据模型。那么为什么说是对象数...

  • mongoose模块

    mongoose mongoose是nodejs的一个第三方模块主要用于nodejs操作mongodb数据库的。 ...

  • nodejs操作mongodb数据库(mongoose)

    创建项目目录并安装mongodb、mongoose mongoose插入数据 mongoose查询数据 mongo...

网友评论

    本文标题:mongoose再认识(三)

    本文链接:https://www.haomeiwen.com/subject/dzzsrqtx.html