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 的事务处理包括开始事务、执行事务操作、提交事务和回滚事务。在执行事务操作时,请确保在一个单一的事务上下文中执行所有操作,并在出现错误时捕获异常并回滚事务。