【问题标题】:Issues with mongodb/nodejs/express/mongojs and findAndModifymongodb/nodejs/express/mongojs 和 findAndModify 的问题
【发布时间】:2016-02-10 14:34:37
【问题描述】:

目前正在做一个在线课程来学习一些 Node.js、Express 和 MongoDB。

在本课程中有一个 api 部分,他们教你做一些简单的事情,但我遇到了一个问题,课程视频显示他正在更新项目的名称,并且 api 可以更新更多字段,他的字段保持价值,我的字段实际上最终为空。

代码是

app.put('/products/:id', function(req, res){
    db.products.findAndModify({query: {_id: mongojs.ObjectId(req.params.id)},
        update:{$set:{
            name: req.body.name,
            category: req.body.category,
            description: req.body.description
        }},
        new: true
}, function(err, doc){
        if(err){
            res.send(err);
        } else {
            console.log('Updating Product...');
            res.json(doc);
        }
    });
});

谁能向我解释一下,如果只更新名称,我如何避免让我们说类别和描述最终为空?

【问题讨论】:

  • 进行更新时req.body.categoryreq.body.description 的值是否也会为空?
  • 这就是我猜的问题,为此使用body-parser。但奇怪的是,在视频课程中,即使他通过相同的方法更新,他的值也不会为空,通过 Firefox 轻松休息

标签: node.js mongodb express mongojs findandmodify


【解决方案1】:

如果您的代码中 req.body.categoryreq.body.descriptionundefined

 update:{$set:{
            name: req.body.name,
            category: req.body.category,
            description: req.body.description
 }},

您的字段将在匹配文档上设置为 null

查看mongodb set null in updateset field as empty for mongo object using mongoose

【讨论】:

  • 你这么认为更新 tur Rest Easy/Firefox,与 ex。 { name: "Test" } 然后其他值变为 null 有没有办法避免这个问题?,只是想知道他是如何让它在他的视频上工作的,他是如何避免这些 null 值的,因为它是相同的代码。
  • @chridam 这应该是默认行为吧?
  • 可能与此issue相关
  • @SørenBenzonEskildsen 您在使用 bodyParser 中间件吗?在你的应用配置中你有:app.use(bodyParser.json());app.use(bodyParser.urlencoded({ extended: true }));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
  • 2011-06-11
  • 2021-03-17
  • 2013-06-03
  • 1970-01-01
相关资源
最近更新 更多