3

ここに私のスキーマがあります:

var postSchema = new mongoose.Schema({
    _id: mongoose.Schema.ObjectId,
    title: String,
    body: String,
    created_at: String,
    modified_at: String
});

var Post = db.model('Post', postSchema);

さて、データベースにはすでに「投稿」のバージョンがあります。これが私が書こうとしているものです(上記のスキーマのインスタンス):

{
  title: 'Sample Post',
  body: 'this s a sample post.',
  _id: 50c208567d32d75f15000001,
  modified_at: 'Fri Dec 07 2012 10:53:42 GMT-0500 (EST)'
}

ID は、データベース内の ID と一致します。これは機能です:

Post.findByIdAndUpdate( post._id, articleObj, function(err, saved) {
  if( err || !saved ) {
    console.log("Post not updated: "+err);
  } else {
    console.log("Post updated: %s", saved);
  }

  callback(err, saved);
});

コンソールは「更新された投稿」と元の投稿オブジェクトを必ず返します。更新は書き込まれず、エラーもありません。

findByIdAndUpdateまた、両方mongoose.Types.ObjectId( )を使用して ID をラップしようとしましたnew ObjectId( )(var ObjectId = require('mongoose').Types.ObjectIdファイルの前半)。

私は困惑しています。どんな助けでも大歓迎です!

4

1 に答える 1

2

articleObjは のインスタンスであるため、そのパラメーターはプレーンな JavaScript オブジェクトである必要があるため、呼び出しPostで使用することはできません。update

于 2012-12-08T01:40:31.420 に答える