如何在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不会识别除NONEALL_OLD以外的任何值。

总之,检索插入对象的唯一可靠方法就是GetItem ,就像你猜测的那样。

请注意,这是您正在插入的项目,您可以访问该项目:

 { "eventId": date + '-' + eventName + '-' + eventPurpose, "eventName": eventName, "eventPurpose": eventPurpose, "eventDates": eventDates, "attendees": attendees } 

您可以简单地将您的代码更改为这个,然后您将已经在itemvariables中插入的项目:

 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也;)