2012-05-10 30 views
6

Tôi mới ở Mongoose/nodejs và tôi đang vật lộn với bản cập nhật đơn giản của một mảng trong một mảng.Làm thế nào để cập nhật ở mongoose?

Dưới đây là sơ đồ:

var County = new Schema({ 
_id     : Schema.ObjectId, 
name    : String, 
biggestCity   : String 
}); 

var Country = new Schema({ 
_id     : Schema.ObjectId, 
name    : String, 
counties    : {type: [County], ref: "County"} 
}); 

var Continent = new Schema({ 
    _id  : Schema.ObjectId, 
    countries : {type: [Country], ref: "Country"}, 
}); 

Và đây là mã cập nhật Tôi đã cố gắng:

var continents = mongoose.model("Continent"); 
var update = { "countries.counties.name": newName, "countries.counties.biggestCity": newBiggestCity }; 
var conditions = { "_id": countryId, "countries.name": countryName, "countries.counties.name": countyName }; 
var options = { multi: false }; 
wagers.update(conditions, update, options, function(err, numAffected) { 
    //callback code... 
}); 

Khi làm điều này, các lỗi trong err nói "Không thể nối đến mảng sử dụng tên trường chuỗi 'quận' '. Điều đó có nghĩa là gì? Tôi đang làm gì sai?

Trả lời

1

Bạn nên xác định đối tượng con làm lược đồ khác, không chỉ là danh sách một số đối tượng ẩn danh. (Reference.)

Hãy thử xác định Country làm một lược đồ riêng biệt, lồng trong Continent, sau đó thực hiện cập nhật của bạn.

+0

Ok. Không có cách nào khác để cập nhật mảng lồng nhau, mà không cần phải xác định lại lược đồ? – tremolo

+0

@tremolo: có thể có hoặc không (Mongoose-fu của tôi vẫn còn yếu), nhưng tôi nghĩ rằng đó là thực hành tốt để xác định lược đồ cho 'Quốc gia'. – Ashe

+0

@tremolo: bạn có thể cập nhật câu hỏi của mình bằng mã mới không? – Ashe

Các vấn đề liên quan