DynamoDB:使用Node.js向列表中添加元素

3
这个方法不起作用,还有其他的方法吗?cord是一个列表,我想向其中添加一张地图。
var params5 = {
  TableName: 'rides',
  Key: {
    'rid': data2.Items[0].rid
  },
  UpdateExpression: 'add cord :x',
  ExpressionAttributeValues: {
    ':x': [{date: secondStartDate.toString(), latitude: xcorpassed, longitude: ycorpassed}]    
  },
  ReturnValues: 'UPDATED_NEW'
}
docClient.update(params5, function (err5, data5) { ... }
2个回答

7

可以使用SETlist_append函数来替代ADD操作(通常情况下,AWS 建议使用SET而不是ADD):

注意list_append函数名称区分大小写)

var params = {
  TableName: "rides",
  Key: {
    "rid": data2.Items[0].rid
  },
  UpdateExpression: "SET #c = list_append(#c, :vals)",
  ExpressionAttributeNames: {
     "#c": "cord"
  },
  ExpressionAttributeValues: {
    ":vals": [{date: secondStartDate.toString(), latitude: xcorpassed, longitude: ycorpassed}]    
  },
  ReturnValues: "UPDATED_NEW"
}

docClient.update(params, function (err, data) {
   if (err) console.log(err);
   else console.log(data);
}

0

看不到它抛出的错误代码,但看起来你应该将add更改为set,并且不要忘记=符号。

 var params5 = {
      TableName: 'rides',
      Key: {
        'rid': data2.Items[0].rid
      },
      UpdateExpression: 'set cord = :x',
      ExpressionAttributeValues: {
        ':x': [{date: secondStartDate.toString(), latitude: xcorpassed, longitude: ycorpassed}]    
      },
      ReturnValues: 'UPDATED_NEW'
    }
    docClient.update(params5, function (err5, data5) {

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接