【发布时间】:2019-09-26 19:06:13
【问题描述】:
我必须在 nodejs+express+mongodb 中构建一个 CRUD,并且我有一个删除订单的功能,它通过一个参数成功删除订单,并且该功能的副本适用于“咖啡”MongoDB 集合。
第二个返回 undefined,或者只是 {}。
首先我修改了集合,然后修改了不同的来源作为参数。
这里是 server.js
// 此代码有效。
app.delete('/orders/:coffee_id', (req, res) => {
db.collection('orders').findOneAndDelete({name: req.body.coffee_id}, (err, result) => {
if (err) return res.send(500, err)
res.json('Order deleted')
})
})
// 订单集合。这意味着访问 localhost:3000/orders/Delta 会返回 Order deleted
// 代码没有按预期工作:
app.delete('/coffees/:id', (req, res) => {
db.collection('coffees').findOneAndDelete({'name': req.body.name}, (err, result) => {
console.log(res.body) // returns undefined.
if (err) return res.send(500, err)
res.json(req.body)
})
})
咖啡收藏。无法从此表中删除。 Postman DELETE 到 localhost:3000/coffees/Jamaica 返回 {} 并且 console.log(res.body) 返回 undefined
有人看出什么不对了吗?如果您需要更多代码,请告诉我。
提前致谢。
【问题讨论】:
-
一般删除请求没有正文。为什么不使用路由中声明的路径参数? (例如
findOneAndDelete({_id: req.params.id}, ...) -
@JakeHolzinger 我不知道,但这是个好问题。我尝试使用您的代码,结果仍然“未定义”。我附上了邮递员截图
-
为什么要定义
res.body?你可能想使用result,响应也不应该是req.body,这就是为什么响应是一个空对象。 -
@JakeHolzinger 有道理,{ lastErrorObject: { n: 0 }, value: null, ok: 1 }。
标签: node.js mongodb express ejs