Javascript Nodejs:更改对象中的单个键值

Javascript Nodejs:更改对象中的单个键值,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,以前有人问过这个问题,但我无法理解答案。所以我再次问。这是我需要操纵的对象 [ "description": { "zh": "CDes", "en": "EDes" }, "nutrition": { "zh": "CNutrition", "en": "ENutrition" }, "brand_names": { "zh": "chineseBName", "en": "englishBName"

以前有人问过这个问题,但我无法理解答案。所以我再次问。这是我需要操纵的对象

[ 
  "description": {
      "zh": "CDes",
      "en": "EDes"
  },
  "nutrition": {
      "zh": "CNutrition",
      "en": "ENutrition"
  },
  "brand_names": {
      "zh": "chineseBName",
      "en": "englishBName"
  }
]
当我使用以下原始代码向url发送put请求时

{ 
   description: {
     "zh" : "chinese"
   }
}
它变为

[
  "description": {
      "zh": "Chinese",

  },
  "nutrition": {
      "zh": "CNutrition",
      "en": "ENutrition"
  },
  "brand_names": {
      "zh": "chineseBName",
      "en": "englishBName"
  }
]
但我想保留“en”:“EDes”。我用$set作为

if (req.body.description.zh !== "undefined"){
    const id = "{" + req.params + " }";
    var obj = {
        'zh' : req.body.description.zh
    };

    Product.update(id, {'$set': {
        "description.$.zh" : req.body.description.zh    
        }
    });
}
但它不起作用。我需要这样做的描述,营养和品牌名称。有人请帮助。非常感谢。
如果这是你的目标

var yourObject = [ 
  "description": {
      "zh": "CDes",
      "en": "EDes"
  },
  "nutrition": {
      "zh": "CNutrition",
      "en": "ENutrition"
  },
  "brand_names": {
      "zh": "chineseBName",
      "en": "englishBName"
  }
]
您可以通过以下方式获得zh对象:

  var obj = {
    'zh' : yourObject[0].description.zh
};

您的初始对象是数组

您试图操作的JSON数组不是有效数组。{“description”:{“zh”:“CDes”,“en”:“EDes”},“nutrition”:{“zh”:“CNutrition”,“en”:“ENutrition”},“brand_name”:{“zh”:“chineseBName”,“en”:“englishBName”},“name”:{“en”:“english”}这正是我从get请求中得到的对象。有人能告诉我答案吗@为什么它不是一个有效的数组?好吧,用大括号表示它是一个有效的JSON对象,但用括号表示,正如您在问题中所写的,它是无效的:JSON数组只能包含JSON对象。你必须写:{code>[{“description”:{“zh”:“CDes”,“en”:“EDes”},“nutrition”:{“zh”:“CNutrition”,“en”:“ENutrition”},“brand_names”:{“zh”:“chineseBName”,“en”:“englishBName”},“names”:{“en”:“english”}]。JSON对象的其他部分也无效。我建议您编辑您的问题,以便我们更好地了解您在做什么我如何只更新描述的“zh”部分而不在描述的“en”部分上写入?yourObject[0]。description.zh=“New Value”` yourObject不是vliad JSON数组。。。正如我在一篇评论中所说,必须在括号内添加大括号,因为JSON数组只能包含JSON对象。我建议你试着看看它是无效的。@Xatyrian我已经在问题中添加了JSON的屏幕截图。请看一看。