Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用_id从mLab集合更新对象_Node.js_Angular_Mongodb - Fatal编程技术网

Node.js 如何使用_id从mLab集合更新对象

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, {

我目前在后端有一个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") };

让我先试试这个。updateMany现在为数组中的所有对象更新相同的值,而不是特定的对象,这不是我想要的。更新后所有对象现在都具有相同的值。@Isaac Agatep您的要求是什么??您想在点击按钮时更新该特定文档吗?是的,这就是我想做的。在我的UI上,集合中的每个对象在输入字段中显示为值。每个对象都有一个更新按钮,我可以在其中使用相同的输入字段更改该特定对象的值。@Isaac Agatep那么您的问题在于查询部分。请参阅我编辑的答案