如何在 ArangoDB 的事务中访问插入文档的 _id
How do I access inserted document's _id within a transaction in ArangoDB
我没有看到任何在交易中访问 inserted/updated 文档密钥的示例。
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()
方法将为已保存文档return 一些元数据:
_rev
: 文档修订 ID(由服务器自动生成)
_key
:文档密钥(由用户在 _key
属性中指定,或者如果没有则由服务器自动生成)
_id
:与key一样,但也包括集合名
要在您的代码中使用生成的 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);
});
我没有看到任何在交易中访问 inserted/updated 文档密钥的示例。
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()
方法将为已保存文档return 一些元数据:
_rev
: 文档修订 ID(由服务器自动生成)_key
:文档密钥(由用户在_key
属性中指定,或者如果没有则由服务器自动生成)_id
:与key一样,但也包括集合名
要在您的代码中使用生成的 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);
});