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
Другие вопросы по тегам