首页 > 解决方案 > 如何通过节点js中的索引更新带有数组的元素

问题描述

我想通过索引号更新元素。我在 Mongodb node.js 上有这样的数据:

{"_id" : ObjectId("5b533c33327d12098277c6a4"),
  "name":["aa","bb","cc"],
  "age":["45","50","40"],
   "home":["dd","ee","ff"]}

我想更改姓名、年龄和家中每个元素的值。我试过这样,但它不起作用。

router.put("/forms/data/edit/:index/:id", function(req,res){
  var i = req.params.index;
  Datastored.findByIdAndUpdate(req.params.id,{$set:{
     name[i]:req.body.name,
     age[i]:req.body.age,
     home[i]:req.body.home}},
    function(err){
        if(err){
          console.log(err)
           res.redirect("back");
        }else{
          console.log("data edited");
          res.redirect("/seealldata");
     }
    });
});

我收到以下错误:

解析错误: Unexpected token [ " , on the line of code, name[i].req.body.name

标签: javascriptnode.jsmongodb

解决方案


经过一番谷歌搜索,我找到了这个问题/答案。尝试以下操作:

router.put("/forms/data/edit/:index/:id", function(req,res){
  var i = req.params.index;
  Datastored.findByIdAndUpdate(req.params.id,{
    $set:{
     [`name.${i}`]: req.body.name,
     [`age.${i}`]: req.body.age,
     [`home.${i}`]: req.body.home
  }},
    function(err){
        if(err){
          console.log(err)
           res.redirect("back");
        }else{
          console.log("data edited");
          res.redirect("/seealldata");
     }
    });
});

推荐阅读