Node.js 如何使用_id从mLab集合更新对象
我目前在后端有一个api,可以更新我的阵列。问题是,它甚至不引用_id,只更新数组中的第一项。每当我编辑其他对象的值,然后单击“更新”时,它只更新集合中的第一个对象 代码如下:Node.js 如何使用_id从mLab集合更新对象,node.js,angular,mongodb,Node.js,Angular,Mongodb,我目前在后端有一个api,可以更新我的阵列。问题是,它甚至不引用_id,只更新数组中的第一项。每当我编辑其他对象的值,然后单击“更新”时,它只更新集合中的第一个对象 代码如下: router.route('carousel/update/:id').put(function(req, res) { var data = req.body; const myquery = {"_id": ObjectId }; db.collection("home").updateOne(myquery, {
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") };
让我先试试这个。updateMany现在为数组中的所有对象更新相同的值,而不是特定的对象,这不是我想要的。更新后所有对象现在都具有相同的值。@Isaac Agatep您的要求是什么??您想在点击按钮时更新该特定文档吗?是的,这就是我想做的。在我的UI上,集合中的每个对象在输入字段中显示为值。每个对象都有一个更新按钮,我可以在其中使用相同的输入字段更改该特定对象的值。@Isaac Agatep那么您的问题在于查询部分。请参阅我编辑的答案