javascript - 如何使用 express 和 Postman 发出 PUT 请求以更改给定的 MongoDB 字段?
问题描述
我希望能够在路由中插入给定的 MongoDB 文档的 id,并使用 Postman 中的正文来更改例如该文档的“余额”字段,但我似乎无法使其工作。到目前为止,我的代码看起来像这样。我的路线:
router.put('/:id', async (req, res) => {
const id = Account.findById(req.params.id);
const updatedAccount = await Account.findByIdAndUpdate(id,{
firstName: req.body.firstName,
lastName: req.body.lastName,
balance: req.body.balance
});
res.end(JSON.stringify(updatedAccount))
});
我的模型:
const AccountSchema = new mongoose.Schema({
firstName: {
type: String,
required: true,
},
lastName: {
type: String,
required: true,
},
balance: {
type: String,
required: true
}
}, { collection: 'account'});
解决方案
我建议您拆分操作(首先查找,然后更新,然后保存)在您的 put 处理程序的回调中尝试这样的操作:
const updates = Object.keys(req.body)
try {
const account = await Account.findById(req.params.id)
updates.forEach((update) => account[update] = req.body[update])
await account.save()
if (!account) {
return res.status(404).send()
}
res.send(account)
} catch (e) {
res.status(400).send(e)
}
推荐阅读
- flutter - 我如何/在哪里将自定义动画浮动操作按钮放在主页/内容的顶部?扑
- reactjs - React State 变量没有更新
- javascript - 取消卸载时的 API 调用
- hadoop - Dask:从 HDFS 读取时,pyarrow/hdfs.py 返回 OSError: Getting symbol hdfsNewBuilder failed
- c# - 对象关系 C#
- reactjs - 在反应生产构建中生成没有散列文件名的构建
- java - 在java中,我如何告诉文件选择并打印一个随机单词?
- docker - 使用 Dockerfile 和 docker-compose 创建和运行 docker 容器
- react-native - react native返回上一页时如何保存状态?
- javascript - Javascript/Node/JSON 问题,为什么这不起作用?