[英]How to return the inserted item in dynamoDB
我正在使用 nodeJS sdk 將項目放入 dynamoDB,項目是:
{
"eventId": date + '-' + eventName + '-' + eventPurpose,
"eventName": eventName,
"eventPurpose": eventPurpose,
"eventDates": eventDates,
"attendees": attendees
}
將項目放入 dynamoDB 的當前代碼:
const params = {
TableName: "event",
Item: {
"eventId": date + '-' + eventName + '-' + eventPurpose,
"eventName": eventName,
"eventPurpose": eventPurpose,
"eventDates": eventDates,
"attendees": attendees
},
ReturnValues: "ALL_OLD"
};
dynamo.put(params, (err, data) => {
console.log("coming here");
if (err) {
console.log("error : " + JSON.stringify(err));
}
console.log("data" + JSON.stringify(data));
cb(null, data);
});
插入正確發生,返回值是一個空對象。
我想退回插入的項目。 我找到了這個文檔。 但這僅在更新舊值的情況下返回。 除了這個,我找不到任何其他有用的信息。
是否有任何解決方法,或者我們只需要使用帶有主鍵的 get 方法進行查詢?
只需在回調中傳遞params.Item
:
dynamo.put(params, (err, data) => {
if (err) {
cb(err);
}
cb(null, params.Item);
});
在回調中也傳遞err
;)
您可以使用UpdateItem
而不是PutItem
。 如果UpdateItem
不存在,則創建一個新項目,此外,您可以將ReturnValues
設置為ALL_NEW
以返回操作后出現在數據庫中的整個項目:
const params = {
TableName: "event",
Key: {
"eventId": date + '-' + eventName + '-' + eventPurpose
},
UpdateExpression: "SET eventName = :eventName, eventPurpose = :eventPurpose, eventDates = :eventDates, attendees = :attendees",
ExpressionAttributeValues: {
":eventName": eventName,
":eventPurpose": eventPurpose,
":eventDates": eventDates,
":attendees": attendees
},
ReturnValues: "ALL_NEW"
};
除非您在 DynamodDB 中使用強一致性,否則在PutItem
之后PutItem
使用GetItem
不是一個好主意。 如果你有最終的一致性(默認),那么在PutItem
之后的GetItem
仍然可以返回空。
請注意,這是您要插入的項目,您已經有權訪問它:
{
"eventId": date + '-' + eventName + '-' + eventPurpose,
"eventName": eventName,
"eventPurpose": eventPurpose,
"eventDates": eventDates,
"attendees": attendees
}
您可以簡單地將代碼更改為此,然后您就可以在item
變量中插入項目:
var item = {
"eventId": date + '-' + eventName + '-' + eventPurpose,
"eventName": eventName,
"eventPurpose": eventPurpose,
"eventDates": eventDates,
"attendees": attendees
};
const params = {
TableName: "event",
Item: item,
ReturnValues: "ALL_OLD"
};
您似乎對插入的內容感到困惑,因為您通過顯示您說要插入的對象來開始您的問題,但是您發布的代碼插入了一個稍微不同的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.