我想知道是否有办法插入新文档并一次性返回。
这就是我目前使用的:
db.collection('mycollection').insertOne(options, function (error, response) {
...
});
答案 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=>{})