【问题标题】:MongoDB/Express API doesn't update entry but returns 200MongoDB/Express API 不更新条目但返回 200
【发布时间】:2018-04-29 22:05:00
【问题描述】:

我目前正在解决我的 React Web 应用程序中的一个问题,该问题不允许我更新 Mongo 数据库中的条目。我发布新文档并轻松获取所有条目,但是当我尝试更新其中的一部分时,我收到 200 响应,但文档从未更新。这是我的反应应用程序的调用:

fetch(API + this.state.project.pin, {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  },
  body: updatedFunctions
})

以及对应的快递代码

 app.post('/:pin', (req, res) => {

  db.collection('projects').update({pin:req.params}, {$set: {functions:req.body}}, function(err, count, result) {
    if (err) return console.log(err)
    console.log('saved to database')
    res.redirect('/')
  })
})

有谁知道这是被错误地发送到哪里?根据我的逻辑,它应该用“updatedFunctions”对象的匹配引脚替换文档中的函数字段。

【问题讨论】:

  • 如果您看到任何一个日志语句,请添加。我相信错误在其他地方。您确定这是正确的路线,并且是该路线的唯一实现吗?
  • 有一个 app.get('/:pin'),但是如果标题中有一个帖子,那不应该干扰吗?它正在记录并被重定向。
  • 如果它被重定向,那么通常没有 HTTP 200 结果,而是一个 HTTP 3xx 的结果......

标签: node.js mongodb reactjs express


【解决方案1】:

您的搜索条件似乎错误:

db.collection('projects').update({pin: req.params.pin}, [...]

您的版本将在 pin 键中搜索对象。这现在在 pin 键中搜索标量/字符串。

【讨论】:

  • 这行得通,但现在预先存在的“函数”对象被一个空对象替换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 2018-06-25
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 2019-08-11
相关资源
最近更新 更多