更新前设置属性

时间:2016-07-04 01:48:15

标签: javascript node.js strongloop

我阅读Operation hooks并理解“不依赖于特定方法”的概念。所以我想知道是否可以在更新模型之前设置属性。

我的用户模型中有一个updatedAt属性,我希望在对PUT动词的所有调用中将其设置为new Date();

我没有尝试任何操作,因为我没有在文档或stackoverflow中找到答案。

感谢。

1 个答案:

答案 0 :(得分:0)

使用operation hooks

module.exports = User => {
  User.observe('before save', (ctx, next) => {
    if (ctx.instance) {
      ctx.instance.updatedAt = new Date()
    } else {
      ctx.data.updatedAt = new Date()
    }
    next()
  })
}

如果您想将此常用逻辑应用于模型集,mixins通常是一种方法。

module.exports = (Model, options) => {
  Model.defineProperty('updatedAt', { type: Date, default: '$now' })

  Model.observe('before save', (ctx, next) => {
    if (ctx.instance) {
      ctx.instance.updatedAt = new Date()
    } else {
      ctx.data.updatedAt = new Date()
    }
    next()
  })
}

如果您不想自己实现此功能,可以使用npm package