Mongoose.find() не может найти элемент
Я пытаюсь найти и обновить WEEKDATA с определенным WEEKNUM.
Схема:
{
ageGroup:String,
monthData: [{
month:String,
weekData : [{
weekNum : String,
theme : String,
}]
}]
}
Вот как я пытаюсь это сделать, но он не может найти WEEKNUM внутри документа, и вместо обновления WEEKDATA он просто создает новый документ, который не требуется:
var timeTable; // CONTAINS JSON SENT BY THE CLIENT (EXACTLY THE SAME AS SCHEMA)
TimeTable.getTimeTableModelObject().findOne(
{
ageGroup: timeTable.ageGroup,
month: timeTable.monthData.month,
weekNum: timeTable.monthData.weekData.weekNum
}, function(err, foundData){
if(err) {
console.error("error in inserting TimeTableController.js ", err);
return;
}
saveOrUpdateWeek();
}
);
function saveOrUpdateWeek() {
var weekData = timeTable.monthData.weekData;
TimeTable.getTimeTableModelObject().findOneAndUpdate(
{
ageGroup: timeTable.ageGroup,
month: timeTable.monthData.month,
weekNum: timeTable.monthData.weekData.weekNum
},
weekData,
{ upsert: true },
function(err, foundData){
if(err) {
console.error("error in inserting TimeTableController.js ", err);
return;
}
}
);
}
Что я делаю не так и как я могу обновить WEEKDATA, который содержит определенный WEEKNUM?
РЕДАКТИРОВАТЬ:
объектtimeTable содержит это
{
ageGroup:"2",
monthData: [
{
month:"Jan",
weekData : [{
weekNum : "1",
theme : "circleTime theme weekly 2",
}]
},
{
month:"Feb",
weekData : [{
weekNum : "2",
theme : "circleTime theme weekly 2"
}]
}
]
}
1 ответ
Я думаю, что у вас есть проблемы с доступом к объекту, потому что вы используете схему, которая использует массив объектов, а не только объекты. попробуйте сначала получить доступ к значениям по их индексу. Например:
var timeTable = {
ageGroup:"2",
monthData: [
{
month:"Jan",
weekData : [{
weekNum : "1",
theme : "circleTime theme weekly 2",
}]
},
{
month:"Feb",
weekData : [{
weekNum : "2",
theme : "circleTime theme weekly 2"
}]
}
]
}
console.log(data.monthData[0].weekData[0]) -> { weekNum: '1', theme: 'circleTime theme weekly 2' }
console.log(data.monthData[0].weekData[0].weekNum) - > 1