javascript - dynamodb在列表中添加对象到列表中的对象内nodejs

标签 javascript node.js amazon-web-services aws-lambda amazon-dynamodb

我在 DynamoDB 中有这种类型的对象,我想向其中添加一个设备。

     {
        "user": "user2",
        "pass": "pass2",
        "name": "persona1",
        "lastname": "person2",
        "places":
        [
        {
          "name": "bedroom",
          "devices": [{
                      "name": "Lampara",
                      "chip": "esp8266_D98FF1"
                    },
                    {
                      "name": "Puerta",
                      "chip": "esp8266_1F852F"
                    }]
        }
      ]
  }

我想在卧室添加一个新设备,例如

{
     "name": "bed",
      "chip": "esp8266_44444F"
}

当对象如此嵌套时,如何将对象添加到 Dynamodb?

编辑:我解决了搜索区域索引并发出此请求的问题。

for (var i = 0; i < req.session.Item.zonas.length; i++) {
  if (req.session.Item.zonas.nombre == req.body.zona){
    index = i;
  }
}
var devicetoAdd = {
     "nombre": req.body.nombre,
     "chip": req.body.cod
};
var params = {
    TableName: "usuarios",
    Key:{
        "user": req.session.user
    },
    UpdateExpression: "set zonas[" + index+ "].devices = list_append(zonas[" + index+ "].devices, :vals)",
    ExpressionAttributeValues: {
      ":vals": [devicetoAdd]
    },
    ReturnValues:"UPDATED_NEW"
};

最佳答案

假设一个对象可以包含多个同名的地方,可以使用函数forEach

var obj = {  TableName: "usuarios",  Item: {    "user": "user2",    "pass": "pass2",    "name": "persona1",    "lastname": "person2",    "places": [{      "name": "bedroom",      "devices": [{          "name": "Lampara",          "chip": "esp8266_D98FF1"        },        {          "name": "Puerta",          "chip": "esp8266_1F852F"        }      ]    }]  }};

obj.Item.places.forEach(p => {
  if (p.name === 'bedroom') {
    p.devices.push({ "name": "bed", "chip": "esp8266_44444F" })
  }
});

console.log(obj)
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - dynamodb在列表中添加对象到列表中的对象内nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48912618/

相关文章:

Javascript - Jquery 链接不起作用

javascript - 使用 css break word 或其他东西对带有 html 标签的文本进行子字符串化?

node.js - http.Server 在 node.js 中没有 addListener 吗?它不是事件发射器?

javascript - Node .js | EnsureAdmin 中间件功能不起作用

javascript - 使用 JQuery 切换进度 Bootstrap 栏

javascript - RxJS 数组(map)数据变化时如何更新?

mysql - nodeJS 脚本在笔记本电脑上运行时可以连接到 aws mySQL 服务器,但在亚马逊 EC2 实例上运行时则无法连接

c# - AWS - Amazon Polly 文本转语音

sql - 从 EC2 迁移到 RDS 后,Postgresql 查询速度降低 10 倍

php - AWS S3 上传桶 - 资源类型无效