gpt4 book ai didi

arrays - 在 AWS dynamoDB 中更新 JSON 数组

转载 作者:行者123 更新时间:2023-12-01 12:25:31 25 4
gpt4 key购买 nike

我的文档是这样的:

{
"data": {
"eventId": "20161029125458-df-d",
"name": "first",
"purpose": "test",
"location": "yokohama",
"dateArray": [],
"attendees": [
{
"attendeeId": "2016102973634-df",
"attendeeName": "lakshman",
"personalizedDateSelection": {}
},
{
"attendeeId": "2016102973634-tyyu",
"attendeeName": "diwaakar",
"personalizedDateSelection": {}
}
]
}
}

比如说,我需要用 更新与会者 JSON 数组与会者ID:2016102973634-df .我尝试了很多方法使用 更新和条件表达式 ,但没有成功。

这是我的尝试:
const params = {
TableName: "event",
Key: {
"eventId": eventId
},
UpdateExpression: "SET attendees[???] = ",
ConditionExpression: attendees.attendeeId = "2016102973634-df",
ExpressionAttributeValues: {
":attendee" : attendeeList
},
ReturnValues: "ALL_NEW"
};


dynamo.update(params, (err, data) => {
if (err) {
return reject(err);
}
console.log(data.Attributes);
});

找不到用于更新数组中的 Json 的任何资源。

在@notionquest 发表评论后:
- 没有使用过任何 JsonMarshaller。最初我将空数组添加到与会者字段,如下所示:
{
"eventId": "20161029125458-df-d",
"name": "first",
"purpose": "test",
"location": "yokohama",
"dateArray": [],
"attendees": []
}

然后当一个新的 与会者来我把它加到 参会者 像这样的属性:
const attendee = {
"attendeeName": "user1",
"personalizedDateSelection": {"today": "free"}
}
const attendeeList = [attendee];
const eventId = "20161029125458-df-d";


const params = {
TableName: "event",
Key: {
"eventId": eventId
},
UpdateExpression: "SET attendees = list_append(attendees, :attendee)",
ExpressionAttributeValues: {
":attendee" : attendeeList
},
ReturnValues: "ALL_NEW"
};


dynamo.update(params, (err, data) => {
if (err) {
return reject(err);
}
console.log("in update dynamo");
console.log(data.Attributes);
});

正如你在上面的片段中看到的,最初我添加了空 [] 数组 并添加一个 使用上述代码的新参与者 .现在,如何更新数组中的特定 JSON。如果你说那不可能,我还能尝试什么?

我应该试试这个:
  • 获取完整的 JSON。
  • 操纵 JSOn 并在我的 nodeJS 中更改我想要的东西。
  • 然后将新的 JSON 更新为 dynamoDB。
  • 但这会消耗两次对 dynamoDB 的调用,这似乎效率低下。

  • 想知道有没有圆路?

    最佳答案

    您可以存储列表的索引。在更新列表时,我们可以使用它们。例如 ,

    {


    "data": {
    "eventId": "20161029125458-df-d",
    "name": "first",
    "purpose": "test",
    "location": "yokohama",
    "dateArray": [],
    "attendees": [
    {
    "index":0,
    "attendeeId": "2016102973634-df",
    "attendeeName": "lakshman",
    "personalizedDateSelection": {}
    },
    {
    "index":1,
    "attendeeId": "2016102973634-tyyu",
    "attendeeName": "diwaakar",
    "personalizedDateSelection": {}
    }
    ]
    }
    }
    const params = {
    TableName: "event",
    Key: {
    "eventId": eventId
    },
    UpdateExpression: "SET attendees[attendee.index].attendeeName = :value",
    ExpressionAttributeValues: {
    ":value" : {"S":"karthik"}
    },
    ReturnValues: "ALL_NEW"
    };


    dynamo.update(params, (err, data) => {
    if (err) {
    return reject(err);
    }
    console.log(data.Attributes);
    });

    关于arrays - 在 AWS dynamoDB 中更新 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40317443/

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