在ArangoDB中,事務處理可以通過db._executeTransaction()
方法來實現。當事務中的某個操作失敗時,你可以使用db._rollbackTransaction()
方法來回滾整個事務。以下是一個簡單的示例:
// 定義事務的函數
function transactionFunction(params) {
const { collections } = require('@arangodb');
const db = require('@arangodb').db;
// 獲取集合
const usersCollection = collections.users;
const ordersCollection = collections.orders;
try {
// 插入用戶
const userResult = usersCollection.save({ name: 'John Doe', email: 'john.doe@example.com' });
// 插入訂單
const orderResult = ordersCollection.save({
product: 'ArangoDB',
price: 199.99,
userId: userResult._key
});
// 如果一切順利,返回成功消息
return { success: true, message: 'Transaction completed successfully' };
} catch (error) {
// 如果發生錯誤,回滾事務并返回錯誤信息
console.error('Error in transaction:', error);
db._rollbackTransaction();
return { success: false, message: 'Transaction failed and rolled back' };
}
}
// 執行事務
const params = {
write: [usersCollection.name, ordersCollection.name]
};
const result = db._executeTransaction({
write: [usersCollection.name, ordersCollection.name],
params
});
console.log('Transaction result:', result);
在這個示例中,我們定義了一個事務函數,該函數嘗試在一個事務中插入一個用戶和一個訂單。如果在執行過程中發生任何錯誤,我們將捕獲錯誤并使用db._rollbackTransaction()
來回滾事務。如果事務成功完成,我們將返回一個成功消息。