在dataset.runInTransaction
(link)的示例中,在transaction.get(key,callback)
上發生了明確的錯誤處理。保存或刪除時,數據存儲事務是否需要回滾?
但是在其他操作上,如transaction.save(entity)
或transaction.delete(key)
,沒有回調,所以真的沒辦法處理錯誤。例如:
dataset.runInTransaction(function(transaction, done) {
transaction.save({
key: dataset.key(['Company', 123]),
data: {}
});
transaction.delete(dataset.key(['Company', 456]));
done();
}, function(err, apiResponse) {});
這是否意味着不需要顯式回滾事務?
雖然我也懷疑在錯誤事務中是否需要調用.rollback(),但您錯誤地關於.save()沒有回調。請參閱https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.27.0/datastore/transaction?method=save – JasonS
我相信transaction.save不會,但dataset.save會將回調作爲最後一個參數。 –
你是對的,我對他們的文檔提出了問題,他們正在修復它。 – JasonS