我已在mysql 8文档中阅读到collection.add操作返回添加到结果中的文档的ID。但是我没有看到如何获取返回的ID的示例。
我尝试了以下方法。插入了文档,但没有返回结果的线索
mysqlx
.getSession(mysqlxOptions)
.then(function (session) {
var db = session.getSchema('oa4');
// Use the collection 'my_collection'
var myColl = db.getCollection('order_items');
return myColl;
})
.then(function (myColl) {
// Insert documents
return Promise
.all([
myColl.add(req.body).execute()
])
})
.then(function(result){
console.log(result);
res.send(result);
})
.catch(function (err) {
// Handle error
console.log(err);
});
获取结果并将其继续传递的正确方法是什么?
答案 0 :(得分:1)
execute()
方法返回一个解析为Result
实例的Promise
实例,而该实例又提供了一个getGeneratedIds()
方法,在Collection.add()
的情况下包含服务器已自动为所有尚未插入的_id
列表列出任何插入的文档。
Promise.all([myColl.add(req.body).execute()])
.then(function (results) {
console.log(results[0].getGeneratedIds()[0]);
})
在这种情况下,假设req.body
本身是一个文档,如果它包含_id
属性,则其值将被有效地用作标识符,并且服务器不会自动生成一个,因此在getGeneratedIds()
返回的列表中将不可用。
免责声明:我是MySQL的X DevAPI Node.js连接器的主要维护者。