オブジェクトが原因で操作が失敗した場合、mongooseコールバックが取得する引数についてのドキュメントを探していました。_id
が見つかりません。私は何も見つけることができません。そこで私は自分で3つのケースを比較しました。 = 'foofoofoofoo'
id
と呼ばれる次の処理が行われます。_idが見つからない場合、mongooseコールバックの結果
// returns: err = null, obj = null
mySchema.statics.findById = function(id, cb) {
this.findOne({ _id: new ObjectId(id) }, cb);
}
// returns: err = null, obj is a cursor with obj.result = { n: 0, ok: 1 }
mySchema.statics.deleteById = function(id, cb) {
this.remove({ _id: new ObjectId(id) }, cb);
}
// returns: err = null, obj is an Object with obj = { n: 0, nModified: 0, ok: 1 }
mySchema.statics.updateById = function(id, updObj, cb) {
this.where({ _id: new ObjectId(id) }).update(updObj, cb);
}
この私見は恐ろしい結果です。私はの2番目の引数として3つの完全に異なる型を得ます:null
、カーソルと単純なオブジェクトです。 cursor.result
でさえ、構造内の「単純オブジェクト」と同じではありません。
私の質問は以下のとおりです。
- アムは、私は、このような矛盾した結果につながり、ここでいくつかのアンチパターン/混合構文を使用していますか?
- さまざまな状況で、mongooseコールバックがどのような結果を呼び出すかについての詳細はどこにありますか?
ドキュメント内のこれらのリンクを読むことができると思います。 1)http://mongoosejs.com/docs/models.html 2)http://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate 個人的には常にエラーを処理しようとしています。 :-) –
1)あなたのリンクをありがとうございますが、正確にはそのドキュメントでは、_idが見つからなかった場合にコールバックが何を取得するかについて詳細はわかりません。 2)私が提示した3つのケースすべてにエラーはありません:( –