首页 > 解决方案 > 为什么这个 Mongoose 更新不保存到数据库中?

问题描述

我所拥有的是一个函数,可以将新日期添加到“举办的课程”日期数组中。

最初,我有一个从在线示例中复制的非异步函数。它使用了一个简单的 Mongoose 'document.save' 调用,并运行了几天。然后它停止更新数组。

所以我做了一些调试,并认为我可能需要一个异步函数,但这也不起作用。我知道我做错了什么,但我不知道是什么。

这是我的代码,带有 console.logs 以显示该函数在做什么:

this.updateDate = async function () {
    try {
        let today = this.getFullDate(); // returns a string that I use as a date in the database
        await Admin.findOne({'local.className':'2018'}).then(function(course){
            console.log('today: '+today);
            console.log('course: '+course);
            let classesHeld = course.local.classesHeld;
            console.log('classesHeld: '+classesHeld);
            console.log('index: '+classesHeld.indexOf(today));
            if(classesHeld.indexOf(today)=== -1){
                classesHeld.push(today);
                console.log('added today: '+classesHeld);
                Admin.update({'local.className':'2018'},{'local.classesHeld':classesHeld});
                console.log('saved it');
            }
           else{
                console.log('Today\'s date already in database.');
            }
        });

    } catch (error) {
        console.log('Error in update date: ' + error);
    }
}

这是我在控制台中看到的:

today: 7/26/2018
course: { _id: 5b57904b0bed9d3004979604,
  __v: 0,
local:
{ className: '2018',
 classesHeld:
  [ '7/16/2018',
    '7/17/2018',
    '7/18/2018',
    '7/19/2018',
    '7/23/2018',
    '7/24/2018',
    '7/25/2018' ] } }
 classesHeld: 
 7/16/2018,7/17/2018,7/18/2018,7/19/2018,7/23/2018,7/24/2018,7/25/2018
 index: -1
 added today: 
 7/16/2018,7/17/2018,7/18/2018,7/19/2018,7/23/2018,
 7/24/2018,7/25/2018,7/26/2018 // this is correct
 saved it // nope

任何帮助表示赞赏。

标签: javascriptmongodbasynchronousmongoose

解决方案


尝试:

await Admin.update({'local.className':'2018'},{$set{'local.classesHeld':classesHeld}});

代替:

Admin.update({'local.className':'2018'},{'local.classesHeld':classesHeld});

推荐阅读