Moongoose pre init hook

时间:2017-09-20 15:19:49

标签: node.js mongoose mongoose-schema

我对Mongoose的init钩子有点问题。 当用户获取数据时,我想向他返回“格式化”值

以下是我的代码示例:

clientSchema.pre('init', function(next, doc) {
    doc.prop = 'something';
    next(); 
});

它工作正常,但是当我查看db时,属性被修改。但是,我自己不保存数据......

怎么可能?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您可能正在寻找虚拟,但不会将其保存到您的数据库中。

也许是这样的:

clientSchema.virtual('formattedProp').get(function() {
  var formatted

  // Use schema properties here to create your formatted value

  return formatted
})

然后您可以像这样访问它:

console.log(client.formattedProp)

您可以在这里阅读更多内容: http://mongoosejs.com/docs/guide.html#virtuals

注意:您可能还想将以下内容添加到架构选项中:

var schema = new Schema(
  {
    // Schema fields
  },
  {
    toObject: {
      virtuals: true
    },
    toJSON: {
      virtuals: true
    }
  }
)