Node.js + MongoDB:插入一个并返回新插入的文档

时间:2016-11-23 14:07:43

标签: node.js mongodb

我想知道是否有办法插入新文档并一次性返回。

这就是我目前使用的:

db.collection('mycollection').insertOne(options, function (error, response) {
    ...
});

7 个答案:

答案 0 :(得分:35)

response结果包含有关命令是否成功以及插入的记录数的信息。

如果要返回插入的数据,可以尝试response.ops,例如:

db.collection('mycollection').insertOne(doc, function (error, response) {
    if(error) {
        console.log('Error occurred while inserting');
       // return 
    } else {
       console.log('inserted record', response.ops[0]);
      // return 
    }
});

insertOne的官方文档:

http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#insertOne

callback类型:

http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#~insertOneWriteOpCallback

result类型:

http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#~insertOneWriteOpResult

答案 1 :(得分:2)

您可以使用mongoose执行此操作。使用save方法,您可以插入文档并成功返回。以下是mongoose documentation

中的示例
product.save(function (err, product, numAffected) {
  if (err) {
    // Handle error...
  } else {
    // Do something with the returned document...
  }
})

答案 2 :(得分:1)

以下代码适用于我, MongoDB 2.2.33版。

db.collection("sample_collection").insertOne({
   field1: "abcde"
}, (err, result) => {
   if(err) console.log(err);
   else console.log(result.ops[0].field1)
}

答案 3 :(得分:0)

您可以使用mongojs来执行此操作。

db.collection('mycollection').save(doc, function(error, response){
  // response has _id
})

答案 4 :(得分:0)

发布此内容可能对某人有所帮助。您可以找到更新的对象,如下所示:

await req.db
    .collection('users')
    .insertOne({ email, password: hashedPassword, name  })
    .then(({ ops }) => ops[0]);

答案 5 :(得分:0)

尝试一下

var client = new TcpClient();
Task result() => client.ConnectAsync(IPAddress.Loopback, 23000);
var ex = Record.ExceptionAsync(async () => await client.ConnectAsync(IPAddress.Loopback, 23000));
Assert.IsAssignableFrom<SocketException>(ex.Result);

答案 6 :(得分:0)

我仍然想使用 .then() 来通过 insert 解析,所以我最终将所有内容都包装在了它自己的 promise 中。

 return new Promise((resolve, reject) => {
     db.collection('entries').insertOne({ entry }, (err, res) => {
     if (err) {
       console.log('error', err);
       reject(null);
     } else {
       resolve(res.ops[0]);
     }
   });
 });

那我就可以了

 insertEntry({}).then(entry=>{})