Node.js+;MongoDB:插入一个并返回新插入的文档
我想知道是否有办法插入新文档并一次性返回 这是我目前正在使用的:Node.js+;MongoDB:插入一个并返回新插入的文档,node.js,mongodb,Node.js,Mongodb,我想知道是否有办法插入新文档并一次性返回 这是我目前正在使用的: db.collection('mycollection').insertOne(options, function (error, response) { ... }); 你可以这样做。使用save方法,您可以插入文档并在成功时返回。以下是来自以下方面的示例: product.save(函数(err、product、numAffected){ 如果(错误){ //处理错误。。。 }否则{ //对返回的文档执行某些操作。。
db.collection('mycollection').insertOne(options, function (error, response) {
...
});
你可以这样做。使用save
方法,您可以插入文档并在成功时返回。以下是来自以下方面的示例:
product.save(函数(err、product、numAffected){
如果(错误){
//处理错误。。。
}否则{
//对返回的文档执行某些操作。。。
}
})
您可以使用它来执行此操作
db.collection('mycollection').save(doc, function(error, response){
// response has _id
})
响应
结果包含有关命令是否成功以及插入的记录数的信息
如果要返回插入的数据,可以尝试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的官方文档
:
回调
类型:
结果
类型:
在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)
}
发布此消息,因为这可能对某人有所帮助。您可以找到更新的对象,如下所示:
await req.db
.collection('users')
.insertOne({ email, password: hashedPassword, name })
.then(({ ops }) => ops[0]);
试试这个
try {
let collection = db.collection('collection_name'); let { ops: inserted } =
await collection.insertOne({ data: object });
// can access array of inserted record like :
console.log(inserted)
} catch (error) {
// log errors
}
我希望仍然使用.then()通过插入来解析,所以我最终将所有内容都包装在它自己的承诺中
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=>{})
你说退回新的是什么意思?是否希望insertOne的响应是具有_id的文档?不,您不能。insert方法只返回文档插入成功的确认。不能将两个动作合并为一个动作。insert()成功后,必须再次启动find()!但是当我执行
console.log(response)
操作时,ops
没有出现,这有点奇怪!它与评估值的时间有关。谢谢!它在github页面的mongodb
驱动程序的node
部分中有记录。从文档中:ops-包含插入了添加的_id字段的文档
。有时文档会建议不推荐的方法,然后终端会发出警告,似乎stackoverflow有更多更新的代码。答案是正确的,虽然我不确定为什么ops
是一个数组,而方法应该只插入一个文档。如果文档已经存在,它将返回它。不是新的