0
私はMongoDBとmongooseを初めて使っています。ObjectIdを持つDoc - 値があればそれを押して、そうでなければ削除します
だから私のモデルはそれらの中で、多くのフィールドを保持している私は、クエリを達成しようとしている何のObjectID
var modelSchema = new Schema({
//...
inner_array: [Schema.Types.ObjectId],
//...
});
の配列があるさ:
それは、ID、
だし、モデルを探します内側の配列に特定の値が含まれている場合は、配列からそれを削除します。
値がinner_array内にない場合、私は、これは単一findOneAndUpdateに書き込むことができると信じて、私は、構文を理解することはできません
var target_id = // document id
var inner_object_id = // value to push
models.MyModel.findOne(
{_id: target_id},
function (err, model) {
// IN THIS SCOPE 'INNER_OBJECT_ID' IS UNDEFINED
// if model.inner_array contains 'inner_object_id', remove it
// otherwise, push 'inner_object_id' into model.inner_array
model.save();
res.json(model); // return modified document to client
}
);
..
おかげでたくさんのことをプッシュ!
MongooseArray.pullとMongooseArray.addToSetを使用すると、コールバック関数では、このようにそれをやってに問題がありましたことを達成できると信じて - 「inner_object_id」変数が定義されていません。それは – Moka
の前に定義されました。私は変数を.bind()を使って渡したようです。 – Moka
うれしいです。 –