如何附加到 dynamodb 中的列表/数组?

Posted

技术标签:

【中文标题】如何附加到 dynamodb 中的列表/数组?【英文标题】:How to append to a list/array in dynamodb? 【发布时间】:2019-11-27 20:52:44 【问题描述】:

对于我的 DynamoDB 表中的“id”(例如e5eb02ae-04d5-4331-91e6-11efaaf12ea5),我有一个名为 Weather 的列

['sun', 'rain', 'snow', etc...]

我需要在 ['hail'] 到达时更新天气。现在,我下面的 update() 替换了整个数组。我要做的就是在该列表的末尾附加“冰雹”。

    const updateinfo = 
       id: "e5eb02ae-04d5-4331-91e6-11efaaf12ea5",   
       Weather: "hail"
    
    try 
        await API.graphql(graphqlOperation (UpdateInfo,  input: updateinfo ))  //mutation
        console.log('success')
       
       catch (err) 
         console.log(err)
       

我该怎么做,确保我的列表只是附加了信息,而不必 get() 并下拉 ['sun', 'rain', 'snow', etc...],然后添加“冰雹”并创建一个新数组?然后是 GetInfo() 和 UpdateInfo(),这是双倍的努力/电话/费用。

【问题讨论】:

【参考方案1】:

我在另一个问题中发布了对类似问题的回复。答案是使用名为 list_append 的 DynamoDB 函数。

list_append(操作数,操作数)

这个函数的计算结果是一个添加了新元素的列表。您可以通过颠倒操作数的顺序将新元素附加到列表的开头或结尾。

您可以在此处查看有关如何使用 AWS AppSync 和 AWS Amplify 执行此操作的详细回复。

https://***.com/a/57088993/11681626

【讨论】:

嗨内森。我没有使用“表达式”或“表达式值”,因为我没有直接与 DynamoDB 交互。我正在使用 AWS AppSync,并且我有一个名为 UpdateInfo 的突变,它由 AWS 自动生成以供使用。这种情况下如何使用list_append()? 您似乎在使用 AWS Amplify 与 AWS AppSync 进行交互?从您的代码的外观来看,这似乎是真的。您可以阅读有关使用 AWS Amplify 项目 here 添加自定义解析器来执行此操作的信息。这是代码生成工具当前不支持的高级用例。您将需要手动添加一些文件,但这绝对是可行的。如果您需要更多帮助,我们很乐意为您提供帮助。 我更新了 the post with your original question 以包含使用 AWS Amplify 的详细示例。希望这会有所帮助!

以上是关于如何附加到 dynamodb 中的列表/数组?的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS AppSync 将项目附加到 DynamoDB

如何使用文档客户端修改dynamodb中嵌入式列表中的元素

RxJS 将 observable 附加到 typescript 中的 observable 数组列表

如何将 gekko 对象插入/附加到现有列表/数组?

DynamoDB入门知识和一些注意事项

无法使用参数列表调用类型“附加”