mirror of https://gitee.com/bigwinds/arangodb
41 lines
1.3 KiB
Plaintext
41 lines
1.3 KiB
Plaintext
!CHAPTER Passing parameters to transactions
|
|
|
|
Arbitrary parameters can be passed to transactions by setting the *params*
|
|
attribute when declaring the transaction. This feature is handy to re-use the
|
|
same transaction code for multiple calls but with different parameters.
|
|
|
|
A basic example:
|
|
|
|
db._executeTransaction({
|
|
collections: { },
|
|
action: "function (params) { return params[1]; }",
|
|
params: [ 1, 2, 3 ]
|
|
});
|
|
|
|
The above example will return *2*.
|
|
|
|
Some example that uses collections:
|
|
|
|
db._executeTransaction({
|
|
collections: {
|
|
write: "users",
|
|
read: [ "c1", "c2" ]
|
|
},
|
|
action: "function (params) { var db = require('internal').db; var doc = db.c1.document(params['c1Key']); db.users.save(doc); doc = db.c2.document(params['c2Key']); db.users.save(doc);}",
|
|
params: {
|
|
c1Key: "foo",
|
|
c2Key: "bar"
|
|
}
|
|
});
|
|
|
|
!SUBSECTION Disallowed operations
|
|
|
|
Some operations are not allowed inside ArangoDB transactions:
|
|
- creation and deletion of collections (*db._create()*, *db._drop()*, *db._rename()*)
|
|
- creation and deletion of indexes (*db.ensure...Index()*, *db.dropIndex()*)
|
|
|
|
If an attempt is made to carry out any of these operations during a transaction,
|
|
ArangoDB will abort the transaction with error code *1653 (disallowed operation inside
|
|
transaction)*.
|
|
|