0
是否可以在一個事務中使用節點api爲Google數據存儲區保存多種數據存儲實體?可以在一次事務中保存多種數據存儲實體嗎?
是否可以在一個事務中使用節點api爲Google數據存儲區保存多種數據存儲實體?可以在一次事務中保存多種數據存儲實體嗎?
是的,雲數據存儲確實支持在同一事務中寫入多種類型。舉一個example from the getting started guide,你可以更新Task
實體,寫一個新的,在這種情況下,將用戶登錄事件:
function markDone (taskId) {
const transaction = datastore.transaction();
const taskKey = datastore.key([
'Task',
taskId
]);
return transaction.run()
.then(() => transaction.get(taskKey))
.then((results) => {
const task = results[0];
task.done = true;
transaction.save({
key: taskKey,
data: task
},
// Also write a log of the user action.
{
key: datastore.key(['User', current_user, 'Event']),
data: [{
name: 'event',
value: 'TaskDone'
}]
}]);
return transaction.commit();
})
.then(() => {
// The transaction completed successfully.
console.log(`Task ${taskId} updated successfully.`);
})
.catch(() => transaction.rollback());
}
真棒感謝。雖然在更新的問題上有無論如何都要做樂觀鎖定,這樣人們可以肯定不會覆蓋可能在另一個事務中寫入的任何字段,這些字段在這個事件剛剛啓動之前就已經啓動並且提交了。 – 1977
雲端數據存儲事務是可序列化的。因此,當您的交易讀取數據時,您可以保證在您提交交易時沒有改變。如果事務失敗(事務運行者應該重試)。請注意,這是在實體(實際上是實體組)級別,而不是字段級別,所以來自其他交易的其他字段仍然會使交易失敗,即使您的交易未觸及這些字段。 –