簡體   English   中英

DynamoDB成功返回但未存儲數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM