ArangoDB 的事務處理是通過 AQL(ArangoDB Query Language)來實現的
db._beginTransaction()
方法。這將啟動一個新的事務,并返回一個事務 ID(tid)。const db = require('@arangodb').db;
const transactionId = db._beginTransaction();
db._query()
方法,并在查詢中指定事務 ID。例如,以下代碼將在名為 “myCollection” 的集合中插入一個新文檔:
const collection = db.collection('myCollection');
const document = { name: 'John Doe', age: 30 };
const query = `FOR doc IN myCollection INSERT doc IN myCollection OPTIONS { force: true } IN TRANSACTION @tid`;
db._query(query, { tid: transactionId });
請注意,事務中的所有操作都必須在一個單一的事務上下文中執行。這意味著,如果在事務過程中出現錯誤,您需要捕獲異常并回滾事務。
db._commitTransaction()
方法提交事務。這將使事務中的所有更改生效,并釋放事務資源。try {
// 執行事務操作
db._commitTransaction();
} catch (error) {
// 如果出現錯誤,回滾事務
db._rollbackTransaction();
throw error;
}
db._rollbackTransaction()
方法回滾事務。這將撤銷事務中的所有更改,并將數據庫恢復到事務開始之前的狀態。try {
// 執行事務操作
db._commitTransaction();
} catch (error) {
// 如果出現錯誤,回滾事務
db._rollbackTransaction();
throw error;
}
總之,ArangoDB 的事務處理包括開始事務、執行事務操作、提交事務和回滾事務。在執行事務操作時,請確保在一個單一的事務上下文中執行所有操作,并在出現錯誤時捕獲異常并回滾事務。