【发布时间】:2018-10-28 06:37:57
【问题描述】:
有人知道,如何在 NodeJS 中实现 put 函数来操作 MongoDB 集合吗?
我看到很多人使用app.get 或app.post 来使用db.collection.updateOne(),但我不敢相信这是正确的做法。
不幸的是,当我使用app.put 时,我没有收到错误消息,但我的收藏中仍然没有任何变化。数据还是一样的。
请看我下面的代码:
app.put('/user/:id', (req, res) => {
const id = req.params.id;
const details= {'_id' : new Object(id)};
const user = {username: req.body.username, password: req.body.password};
db.collection('users').findOneAndUpdate(details,{$set: user},{new: true}, function (err, item) {
if (err) {
res.send({'error':'An error has occured'});
} else {
res.send(user)
}
});
});
【问题讨论】:
-
您在“对象”中使用“对象”。您的意思是
db.collection('users').updateOne(details,{$set: user}...,因为您已经在代码前面分配了details的“查询对象”。 -
感谢您的提示。不幸的是,错误仍然存在。当我使用 Postman 并在此路径中使用“放置”,然后在请求正文中提供数据时,根本没有任何变化......
-
这不是一个提示,而是一个明显的错误。当您发布时,
req.params.id的值是多少?究竟什么是“错误”?当然,现在会有所不同。 -
问题是我根本没有得到......我得到了我在 else{} 中定义的响应,但是当我请求另一个 \get 我想要修改的用户仍然是一样...它是一个字符串,我猜...我正在做的请求是: localhost:8000/user/5afdb8d8836baa20f3c23e10
-
因为你使用了错误的函数。你想要
findOneAndUpdate()