node.js - 如何使用 _id 从 mLab 集合中更新对象
问题描述
我目前在我的后端有一个可以更新我的数组的 api。问题是,它甚至不引用 _id 并且只更新我数组中的第一项。每当我编辑其他对象的值然后单击更新时,它只会更新我集合中的第一个对象。
这是代码:
router.route('carousel/update/:id').put(function(req, res) {
var data = req.body;
const myquery = {"_id": ObjectId };
db.collection("home").updateOne(myquery, {
$set: {
"img": data.img,
"header": data.header,
"subheader": data.subheader
}
}, (err, results) => {
res.status(200).json({status: "ok"})}
})
这段代码允许我更新我的集合中的第一个对象。我如何配置它以允许使用 _id 更新特定对象?我错过了什么?
编辑
在查看其他堆栈溢出帖子后,这就是我所做的:
const myquery = {"_id" : ObjectId(req.params.id) };
但现在我收到一条错误消息,提示“传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符串。此外,当我控制台日志时,URL 的 ':id' 部分未定义。
解决方案
你正在使用updateOne
它的应该updateMany
如下
db.collection("home").updateMany(myquery, {
updateOne
将更新第一个文档。
编辑
也看看这条线
const myquery = {"_id": ObjectId }; is incomplete
应该
const myquery = {"_id": ObjectId("some id") };
推荐阅读
- django - Django Admin - 预填充字段并设置为只读
- javascript - 如何在 app.js 文件中包含 EJS 文件?
- html - 如何在 Angular Flex-box 上添加新行
- video - 使视频片段再次可用
- http - ESP8266/NodeMCU POST 请求返回 -1 状态码
- python - 无法让 Python Pygame 对象改变方向
- javascript - 按名称打开电子表格,如果没有找到则创建新电子表格
- c++ - C ++无法将函数传递给二叉搜索树遍历方法
- nativescript - nativescript-background-http 文件上传通知
- git - 如何将文件添加到具有深层文件夹树的 github 存储库?