数据库中项目的结构如下所示:
{
"cars": {
"x": [
{
"time": 1485700907669,
"value": 23
}
]
},
"date": 1483214400000,
"id":"1"
}
我必须将类型列表的新项目“z”添加到像
这样的汽车中{
"cars": {
"x": [
{
"time": 1485700907669,
"value": 23
}
],
"z": [
{
"time": 1485700907669,
"value": 23
}
]
},
"date": 1483214400000,
"id": "1"
}
如果我想实现像这样的事情,Node.js中的更新表达式会是什么样子?
到目前为止,这是我提出的:
set #car.#model= list_append(if_not_exists(#car.#model, :empty_list), :value)
但是,如果项目在创建时不存在,则会抛出错误。知道怎么做吗?
这是我正在使用的更新参数,仍然不起作用
var params = {
TableName:table,
Key:{
"id": id,
"date": time.getTime()
},
ReturnValues: 'ALL_NEW',
UpdateExpression: 'SET #car.#model = if_not_exists(#car.#model,
:empty_list)',
ExpressionAttributeNames: {
'#car': 'cars',
'#model':"z"
},
ExpressionAttributeValues: {
':empty_list': [],
}
};
答案 0 :(得分:0)
将更新表达式分为两个单独的表达式:
SET #car.#model = if_not_exists(#car.#model, :empty_list) SET #car.#model = list_append(#car.#model, :value)
答案 1 :(得分:0)
解决方案是分两步更新操作,首先为父级创建一个空映射,因为它首先不存在。 所以,就我而言
SET #car= :empty_map
其中:empty_map = {}
执行此操作后运行其他更新表达式
SET #car.#model = list_append(if_not_exists(#car.#model, :empty_list), :value)
其中:empty_list = []和:value = { "时间":1485700907669, "价值":23 }