[英]DynamoDB put returning successfully but not storing data
情況是,我想在DynamoDB數據庫中存儲一些信息,然后僅在我確定此信息已成功存儲時才發送通知。 這是我的代碼:
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
})
我假設如果存儲數據時出錯,那么它將被捕獲在catch
塊中,並且不會發送通知。 但是,我看到在某些情況下盡管各個信息尚未存儲在數據庫中,但仍在發送通知。 這種情況很少發生-在幾乎所有情況下,代碼都可以按需運行。
關於為什么會發生/如何發生以及如何阻止它的任何想法。 DynamoDB沒有任何有用的信息返回到.then
-它只有在成功的情況下一個空的對象,並發送通知之前,我已經檢查這個。
您使用的是“最終一致”還是“強烈一致”讀物?
從DynamoDB表讀取數據時,響應可能無法反映最近完成的寫操作的結果。 響應中可能包含一些過時的數據。 如果您在短時間內重復讀取請求,則響應應返回最新數據。
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html
您可能需要重試讀取,或者更改讀取一致性值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.