使用Mongoose返回更新的集合

 倪好蛋蛋小猪 发布于 2023-02-09 13:09

我使用nodejs/express/mongoose/angularjs.我想更新一个名为Lists的集合,它有几个属性,其中一个是项目数组.在下面的代码中,我在items数组中推送一个新的任务项.一切正常,但更新功能不会发回更新的集合,然后我必须对数据库执行另一个查询.有没有更有效的方法来做到这一点?

nodejs/express代码:

exports.addTaskToList = function(req, res) {
    var listId = req.params.Id;
    var taskId = req.params.TaskId;
    Lists.update({_id: listId}, {$push: {items: taskId}}, {safe:true, upsert: true}, function(err, result){
        if(err) {
            console.log('Error updating todo list. ' + err);
        }
        else{
            console.log(result + ' todo list entry updated - New task added');
            Lists.findById(listId).populate('items').exec(function (err, updatedEntry) {
                if (err) {
                    console.log('Unable to retrieve todo list entry.');
                }
                res.send(JSON.stringify(updatedEntry));
            });
        }           
    });
};

此外,数组项是ObjectIds的数组.这些项目位于单独的模式中,因此位于单独的集合中.是否可以推送整个对象,而不仅仅是其_id,以便不会创建另一个集合?

2 个回答
  • 该更新方法 不返回更新的文档:

    但是,如果我们不需要在我们的应用程序中返回的文档而只是想直接更新数据库中的属性,那么Model#update适合我们.

    如果您需要更新并退回文档,请考虑以下选项之一:

    传统方法:

    Lists.findById(listId, function(err, list) {
        if (err) {
            ...
        } else {
            list.items.push(taskId)
            list.save(function(err, list) {
                ...
            });
        }
    });
    

    更短的方法:

    Lists.findByIdAndUpdate(listId, {$push: {items: taskId}}, function(err, list) {
        ...
    });
    

    2023-02-09 13:11 回答
  • 使用findOneAndUpdate()方法并在查询参数中使用选项{{new":true}

    return this.sessionModel
           .findOneAndUpdate({user_id: data.user_id}, {$set:{session_id: suuid}}, { "new": true})
           .exec()
           .then(data=>{
            return {
              sid: data.session_id
                }
            })
    

    2023-02-09 13:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有