Tôi đã tìm kiếm nhiều câu hỏi trên các đối tượng lồng nhau, nhưng tất cả những gì tôi tìm thấy có liên quan đến mảng [s].Cập nhật đối tượng lồng nhau trong mongoose
Tôi đang tìm một đối tượng lồng nhau được cập nhật đơn giản trong mongoose.
Từ đây http://mongoosejs.com/docs/guide.html
there is an example schema :
var blogSchema = new Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
Sau khi tạo một tài liệu,
Làm thế nào tôi có thể thay đổi số favs sau này?
Không có tài liệu nào giống như tôi có thể tìm thấy.
Đây là những gì tôi đã làm:
blog.findById(entityId, function(err, mainDoc){
if(err || !mainDoc) return next(err || 'Document not found');
var subDoc = mainDoc['meta'];
if(subDoc){
subDoc = _.extend(subDoc, { favs : 56 }); //_ lib already available
console.log(mainDoc.get('meta')); //Prints the updated result with favs = 56 OK
mainDoc.save(function(err, doc){
console.log(doc.get('meta')); // prints the updated results with favs = 56 OK
});
} else next('Not found');
});
Mọi thứ hoạt động tập tin và tất cả các giao diện điều khiển cung cấp cho các kết quả mong muốn.
Nhưng khi tôi chuyển sang bảng điều khiển mongoose và truy vấn tài liệu, tôi không nhận được kết quả được cập nhật.
Tôi biết có thể có những cách khác để đạt được điều tương tự, nhưng tôi chỉ tìm kiếm những gì tôi đang làm sai trong mã cụ thể này.
Tại sao bảng điều khiển, sau khi lưu tài liệu, cung cấp dữ liệu chưa được so khớp từ cơ sở dữ liệu?
Khi bật tùy chọn gỡ lỗi mongoose, tôi đã tìm thấy truy vấn trong không có dữ liệu nào được cập nhật. Truy vấn kích hoạt với bộ $ trống. {$ Thiết lập: {}}
Tôi biết rõ đây là câu trả lời tốt hơn. nhưng tôi đã thực sự tìm kiếm những gì tôi đang làm sai trong mã trên của tôi. – codeofnode
Nếu 'favs' là một biến. Sau đó làm thế nào tôi có thể đạt được một cái gì đó như dưới đây? blog.findByIdAndUpdate (entityId, {$ set: {'meta [favs]': 56}}, chức năng (err, doc) { console.log (doc); }); –