如何访问插入的文档';ArangoDB中事务中的s_id
我没有看到在事务中访问插入/更新文档密钥的任何示例如何访问插入的文档';ArangoDB中事务中的s_id,arangodb,Arangodb,我没有看到在事务中访问插入/更新文档密钥的任何示例 var collections = {write: ['foo','bar']}; var action = String(function () { var doc = params['doc']; var relatedDoc = params['relatedDoc']; var db = require('internal').db; db.foo.save(doc); // how do I acces
var collections = {write: ['foo','bar']};
var action = String(function () {
var doc = params['doc'];
var relatedDoc = params['relatedDoc'];
var db = require('internal').db;
db.foo.save(doc); // how do I access the _id, key etc of the newly inserted doc?
relatedDoc.foos.push(doc._id); // _id does not exist yet
db.bar.save(relatedDoc);
return {success: true};
});
var params = {
doc: doc,
relatedDoc: relatedDoc
};
db.transaction(collections, action, params, function (err, result) {
if (err) {
return dfd.reject(err);
}
return dfd.resolve(result);
});
collection.save()
方法将为保存的文档返回一些元数据:
:文档修订id(由服务器自动生成)\u rev
:文档密钥(由用户在\u-key
属性中指定,如果不是,则由服务器自动生成)\u-key
:与键相同,但也包括集合名称\u id
collection.save()
的结果,并按如下方式使用它:
var collections = {write: ['foo','bar']};
var action = String(function () {
var doc = params['doc'];
var relatedDoc = params['relatedDoc'];
var db = require('internal').db;
var newDoc = db.foo.save(doc); // capture result of save in newDoc
relatedDoc.foos.push(newDoc._id); // use newDoc._id for
db.bar.save(relatedDoc);
return {success: true};
});
var params = {
doc: doc,
relatedDoc: relatedDoc
};
db.transaction(collections, action, params, function (err, result) {
if (err) {
return dfd.reject(err);
}
return dfd.resolve(result);
});
+1表示
字符串(函数(){…})
以避免多行字符串。与ES6文本字符串相比,我不确定效率。我认为一个常规的var action=function(){…}代码>也会起作用。至少这是我一直在使用的,尽管你必须小心,不能将它们用作闭包。