findOneAndUpdate()
メソッドを使用して、ドキュメントが存在しない場合は作成するか、存在する場合は更新します。次のコードを考えてみましょう:MongoDB/Mongoose:findOneAndUpdate()でドキュメント全体を更新する
SampleComment = new Comment({
id: '00000001',
name: 'My Sample Comment',
...
})
これはSampleCommentのaldreadyが存在するかどうかを調べるために私の試みであり、もしそうなら、それを更新し、そうでなければ作成:
Comment.findOneAndUpdate(
{ id: SampleComment.id },
{ SampleComment }, // <- NOT PASSING THE OBJECT
{ upsert: true, setDefaultsOnInsert: true },
function(error, result) {
...
});
私がモデルに合格しようとしています-instanceは第2引数のオブジェクトとして実行されますが、結果はモデルのデフォルト値のみを返します。同じことがドキュメント自体にも当てはまります。
オブジェクトSampleComment
を第2引数に正しく渡すにはどうすればよいですか?
私は '{new:true}'パラメータを試しましたが、他のものは間違っているようです。 '$ set'を追加すると、' [TypeError:プロパティ 'toObject' of nullを読み取れません] ' –
コンソールに' SampleComment'を出力して、nullでないかどうか調べてください。また、私は自分の投稿から$ setを取り除き、 'SampleComment'を中括弧なしで入れてみてください。 – Kairat
console.logは、すべてのプロパティを含む完全なオブジェクトを返します。私は$ setと中括弧を削除しようとしました。エラーは消えましたが、オブジェクトはまだ渡されず、dbドキュメントは空のままですが、デフォルト値はそのままです。 –