【问题标题】:Mongoose autoincrement confusionMongoose 自动增量混淆
【发布时间】:2016-06-24 05:06:22
【问题描述】:

我是 Mongoose 的新手,所以考虑到这一点......

我正在尝试更新文档中的数据但没有成功。 下面的代码按照我的预期识别文档并按预期更改模型。但是更新后的模型没有保存到 MongoDB,我不知道为什么...... (也许我应该使用 findOneAndUpdate 指令,但像这样零碎工作更容易遵循。)

UserModel.findOne({memberID: req.params.memberID}, function(err, foundObject) {
        if(err) {
            console.log('ERROR PUT:/updateUser -> ' + err);
            res.status(500).send();
        } else {
            if(!foundObject) {
                console.log('ERROR - PUT:/updateUser, No such record -> ' + req.params.memberID);
                res.status(500).send();
            } else {
                console.log("1 :" + foundObject.info.fName);
                if(req.body.fName)
                    foundObject.info.fName = req.body.fName;
                console.log("2 :" + foundObject.info.fName);

                foundObject.update(function(err, updatedObject) {
                    if(err) {
                        console.log('ERROR - PUT:/updateUser, SAVE FAIL -> ' + err);
                        res.status(500).send();
                    } else {
                        res.status(200).send(updatedObject);
                    }
                });
            }
        }
    });

Postman 的输出(我用来测试)是 { “好”:1, “nModified”:0, “n”:1 } 数据库上的直接控制台查询显示没有变化。

【问题讨论】:

  • 用foundObject.save函数代替foundObject.update。
  • 我看到您正在尝试查找 1 条记录并对其进行更新。那么为什么不使用 FindAnyModify 呢?阅读更多https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/
  • 自增混淆是什么意思?

标签: node.js mongodb mongoose updatemodel


【解决方案1】:

可以试试这个。

UserModel.findOneAndUpdate({memberID: req.params.memberID}, {$set: {"info.fName" : req.body.fName}}, {new: true})
    .exec(function (error, updatedUser) {
        if (error) {
            return res.status(400).send({msg: 'Update failed'});
        }
        return res.status(200).send(updatedUser);
    });

注意:确保 req.params.memberIDreq.body.fName 正确

【讨论】:

  • "info.fName" : req.body.fName
  • 谢谢大家。像往常一样,我把问题复杂化了
猜你喜欢
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 2020-09-26
  • 2013-06-06
  • 2015-09-02
  • 2023-03-20
  • 2021-02-03
  • 2018-03-11
相关资源
最近更新 更多