gpt4 book ai didi

amazon-web-services - PutItem 和 DynamoDB 使用列表/数组

转载 作者:行者123 更新时间:2023-12-04 08:14:39 26 4
gpt4 key购买 nike

我正在努力实现我认为非常标准的东西,但我已经碰壁了。我有一堆数据要存储在 DynamoDB 中

    const putDataParams = {
TableName: "sensorNodeData2",
Item: {
"deviceId": {"S": event.deviceId},
"timeStamp": {"N": event.time},
"rssi": {"S": event.rssi},
"seq": {"S": event.seqNum},
"payload": {"L": payloadArrayInt16.map(x => x.N)}
}
};
console.log('Data PutItem Params = ' + JSON.stringify(putDataParams));

dynamodb.putItem(putDataParams, function(err, data) {
if (err) {
console.log(err);
context.fail('ERROR: Dynamo failed: ' + err);
}
else {
console.log(data);
context.succeed('SUCCESS');
}
});


问题是我一生都无法弄清楚如何让列表部分起作用。我首先将其定义为:
var payloadArrayInt16=  new Uint16Array(dataArrayMaxIndex); 

错误是:
"errorMessage": "ERROR: Dynamo failed: InvalidParameterType: Expected params.Item[payload].L to be an Array"

然后我试过:
var payloadArrayInt16= [dataArrayMaxIndex];

哪个通过了,但显然没有做我想要的......当我打印出参数时,它没有拉出数组的内容。它看到:
"Temp":{"L":[null,null,null,null,null,null,null,null,null,null]}

我正在拔头发。在任何地方都没有一个关于如何做到这一点的例子。有人可以让我摆脱痛苦吗?!

最佳答案

DynamoDB 数值数组表示如下:

"payload": {
"L": [
{
"N": "1"
},
{
"N": "2"
},
{
"N": "3"
}
]
}

现在,如果您的输入数组 payloadArrayInt16 是这样的:
[1,2,3]

您必须将其转换为 dynamo db 格式:
payloadArrayInt16.map(x => { return { "N": x.toString() }});

但是您可以使用 this official aws dymanodb js library 让您的生活更轻松。
它处理原生 js 对象结构与 dynamo db 数据结构之间的所有转换,反之亦然。

此外,如果您正在使用 AWS IoT Core您可以直接将数据写入 dynamodb,无需任何 lambda。

关于amazon-web-services - PutItem 和 DynamoDB 使用列表/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53185405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com