如何在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方法与主键查询?
您发布的链接可惜是目前唯一真正的答案(API版本2012-08-10)。 PutItem
可能会在更新之前返回项目,或者根本没有。
多个DynamoDB操作使用
ReturnValues
参数; 但是,PutItem
不会识别除NONE
或ALL_OLD
以外的任何值。
总之,检索插入对象的唯一可靠方法就是GetItem
,就像你猜测的那样。
请注意,这是您正在插入的项目,您可以访问该项目:
{ "eventId": date + '-' + eventName + '-' + eventPurpose, "eventName": eventName, "eventPurpose": eventPurpose, "eventDates": eventDates, "attendees": attendees }
您可以简单地将您的代码更改为这个,然后您将已经在item
variables中插入的项目:
var item = { "eventId": date + '-' + eventName + '-' + eventPurpose, "eventName": eventName, "eventPurpose": eventPurpose, "eventDates": eventDates, "attendees": attendees }; const params = { TableName: "event", Item: item, ReturnValues: "ALL_OLD" };
您似乎对插入的内容感到困惑,因为您通过显示您所插入的对象来开始您的问题,但是您发布的代码插入了稍微不同的对象。
只需在callback中传递params.Item
:
dynamo.put(params, (err, data) => { if (err) { cb(err); } cb(null, params.Item); });
通过callbackerr
也;)