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