【问题标题】:How to append to a list/array in dynamodb?如何附加到 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(),这是双倍的努力/电话/费用。

【问题讨论】:

    标签: javascript database amazon-web-services amazon-dynamodb graphql


    【解决方案1】:

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

    list_append(操作数,操作数)

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

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

    https://stackoverflow.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 的详细示例。希望这会有所帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2021-02-21
    相关资源
    最近更新 更多