nodejs X DevApi添加返回ID

时间:2019-05-19 20:42:57

标签: mysql node.js

我已在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);
});

获取结果并将其继续传递的正确方法是什么?

1 个答案:

答案 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连接器的主要维护者。