Die Situation ist, dass ich einige Informationen in einer DynamoDB-Datenbank speichern möchte, und senden Sie eine Benachrichtigung nur, wenn ich sicher bin, dass diese Informationen erfolgreich gespeichert wurden. Hier ist, was mein Code wie folgt aussieht:DynamoDB wird erfolgreich zurückgegeben, aber keine Daten speichern
const putObj = Bluebird.promisify(docClient.put, { context: docClient })
// ... a promise chain collecting information...
const params = {
TableName: 'my_table',
Item: {
name: itemName
}
}
return putObj(params)
.then((data) => {
if (Ramda.equals(data, {})) {
// ... send notification here
.catch((err) => {
throw err
})
Ich gehe davon aus, dass, wenn ein Fehler ist, die Daten zu speichern, wird dies in dem catch
Block und die Benachrichtigung gesendet wird, nicht gefangen werden. Allerdings sehe ich in einigen Fällen, dass Benachrichtigungen gesendet werden, obwohl die entsprechenden Informationen nicht in der Datenbank gespeichert wurden. Dies geschieht nur selten - in fast allen Fällen funktioniert der Code wie gewünscht.
Irgendwelche Ideen darüber, warum/wie dies passieren könnte, und was ich tun kann, um es zu stoppen. DynamoDB gibt keine nützlichen Informationen an die .then
zurück - es ist nur ein leeres Objekt im Erfolgsfall, und ich überprüfe dies bereits, bevor ich die Benachrichtigung sende.
Danke dafür. Das Problem besteht darin, dass dies bei Schreibvorgängen auftritt, die * nicht * aktuell sind. Vorgänge, die vor Stunden oder Tagen hätten stattfinden sollen, werden immer noch nicht in der Datenbank wiedergegeben. – otajor