1

我使用 Mongoose getter 和 setter 我最近发现 setter 仅在我创建新文档 (UserSchema.create...) 时适用,但不会调用 setter 进行更新 (UserSchema.findByIdAndUpdate...)。我是对的还是我错过了什么。如果我是对的,是否有更新的二传手?

http://mongoosejs.com/docs/2.7.x/docs/getters-setters.html

谢谢。

更新

我发现了 git 问题:https ://github.com/LearnBoost/mongoose/issues/751 ,这意味着这是预期的行为。不确定我是对的。

4

2 回答 2

1

发现我不应该使用 findByIdAndUpdate,而是应该查询对象、编辑和保存。

于 2013-09-20T18:02:07.397 回答
0

从https://groups.google.com/forum/?fromgroups=#!topic/mongoose-orm/8AV6aoJzdiQ找到了一个很好的方法:

function findByIdAndSave( model, id, data, next ){

  model.findById( id, function( err, doc ) {
    if( err ){
      next( err, null );
    } else {
      if(! doc ){
        next( new Error("Object to save not found"), null );
      } else {
        // There must be a better way of doing this
        for( var k in data ){
          doc[k] = data[k];
        }
        doc.save( next );
      }
    }
  });
}

(这确实属于评论,但答案允许更好的代码格式)

于 2015-01-28T04:47:26.633 回答