Mongoose ile bir seferde bir (alt) belgede birden çok özellik ayarlamak mümkün mü? Ben çalışıyorum bir örnek yapmak:nodejs/mongoose ile bir alt belgenin kısmi güncelleştirmesi
var subSchema = new Schema({
someField: String,
someOtherField: String
});
var parentSchema = new Schema({
fieldOne: String,
subDocs: [subSchema]
})
Sonra yapmak istiyorsunuz:
exports.updateMyDocument = function(req, res) {
var parentDoc = req.parentDoc; // The parent document. Set by parameter resolver.
var document = req.myDoc; // Sub document of parent. Set by parameter resolver.
var partialUpdate = req.body; // updated fields sent as json and parsed by body parser
// I know that the statement below doesn't work, it's just an example of what I would like to do.
// Updating only the fields supplied in "partialUpdate" on the document
document.update(partialUpdate);
parentDoc.save(function(err) {
if(err) {
res.send(500);
return;
}
res.send(204);
});
};
Normalde kullanarak bu elde edebiliriz
en Bu şemayı var diyelim $set
işleci, ancak benim sorunum bu örnekte document
parentDoc
bir alt belgenin (gömülü şeması) olmasıdır. Bu yüzden subDocs._id
tarafından tanımlanan alt belge örneği yerini
Parent.update({_id: parentDoc._id, "subDocs._id": document._id},
{$set: {"subDocs.$" : partialUpdate}},
function(err, numAffected) {});
yapmaya çalıştığımızda. Şu anda sadece alanları elle ayarlayarak "çözdüm", ancak bunu yapmanın daha iyi bir yolunu umuyordum.
Evet, ilk bunu yaptı. Ama bunu yapmak zorunda olmadığımı umuyordum. – NilsH
Bunu kabul etmek, bunu yapmanın tek yolu gibi görünüyor. Bu durumda, "hasOwnProperty" denetimi için herhangi bir ihtiyaç var mı, yoksa istek gövdesinden bir JSON nesnesi olduğundan bu gerekli değil mi? – NilsH
Özellikleri döngülemek için biraz daha iyi bir yol, "Object.keys" işlevini kullanmak olabilir, çünkü yalnızca "kendi özellikleri" ni içerecektir (muhtemelen başka özellikler olmayacaktır). – NilsH