web-dev-qa-db-fra.com

dynamodb.put (). Promise () ne renvoie pas l'objet de vente

J'essaie d'utiliser la fonctionnalité Async/Await en ce qui concerne AWS et Dynamo DB. Vous trouverez ci-dessous un exemple de mise en place d'un objet pré-asyn attendre, comme vous pouvez le constater dans le rappel, vous avez accès à des données contenant l'objet de vente. Toutefois, dans le deuxième bloc de code qui utilise ASYNC et promis le résultat est un objet vide, toutes les pensées?

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getingtingstarted.nodejs.03.html

version non prometteuse

var docClient = new AWS.DynamoDB.DocumentClient();

var table = "Movies";

var year = 2015;
var title = "The Big New Movie";

var params = {
    TableName:table,
    Item:{
        "year": year,
        "title": title,
        "info":{
            "plot": "Nothing happens at all.",
            "rating": 0
        }
    }
};

console.log("Adding a new item...");
docClient.put(params, function(err, data) {
    if (err) {
        console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
    } else {
        console.log("Added item:", JSON.stringify(data, null, 2));
    }
});

Promise Version ASYNC - Supposons que la fonction d'emballage est marquée ASYNC

var docClient = new AWS.DynamoDB.DocumentClient();

var table = "Movies";

var year = 2015;
var title = "The Big New Movie";

var params = {
    TableName:table,
    Item:{
        "year": year,
        "title": title,
        "info":{
            "plot": "Nothing happens at all.",
            "rating": 0
        }
    }
};
const result: any = await dynamoDb.put(params).promise()
console.log(result) 
18
Mingo

J'ai essayé ReturnValues: 'ALL_OLD' mais en async await Cela n'a aucun résultat.

Voici une partie du code:

const answersParams = {
          TableName: ANSWERS_TABLE,
          Item: {
            answersId,
            answers,
            userId,
            quizId,
          },
          ReturnValues: 'ALL_OLD',
        };

        try {
          const createdAnswres = await db.put(answersParams).promise();

          return {
            statusCode: 201,
            body: JSON.stringify(createdAnswres && createdAnswres.Item),
          };
        } catch (error) {
          return {
            statusCode: 500,
            body: 'failed to save user answers',
          };
        }
      }
    

J'ai donc dû ajouter une autre demande à DB:

const createdAnswres = await db.get({
              TableName: ANSWERS_TABLE,
              Key: { answersId },
            })
            .promise();
    

1
Aleks Barylo