如何在插入时获取MongoDB对象的唯一标识
问题描述:
我正在使用MongoDB(目前使用Mongojs)开发NodeJS快速应用程序,但无法弄清楚如何使用它执行某些操作。如何在插入时获取MongoDB对象的唯一标识
我需要将一个对象插入到一个集合中,并立即获取这个新插入的唯一标识符作为变量存储,以便稍后在应用程序中使用。我对使用Mongo非常陌生,但据我所知,有一个'_id'字段会自动生成为任何集合的主键。这看起来像我需要的,纠正我,如果我错了。
任何援助将不胜感激。 再次感谢。
答
随着MongoJS,您可以collection.save()
或collection.insert()
使用回调,例如:
db.myCollection.save({
foo: 'foo',
bar: 'bar'
}, function (err, doc) {
// here, the doc will have the generated _id
console.log(doc);
/* output:
{
"foo": "foo",
"bar": "bar",
"_id": "569f1730fde60ac030bc223c"
}
*/
});
这是令人难以置信的冷静。有没有办法从回调函数中获取该值? – Nodal
@Nodal这有点棘手,你有一些答案在这里:http://stackoverflow.com/questions/6847697/how-to-return-value-from-an-asynchronous-callback-function?lq=1(检查链接的“重复”),基本上,你不能,你必须使用它。提议的解决方案之一是使用Promises,MongoJS不支持它们,但官方的[mongodb](https://www.npmjs.com/package/mongodb)驱动程序或[mongoose](https://www.npmjs。 com/package/mongoose)(如果你需要像ODM/ORM这样的高级功能)。 – Shanoor
再次感谢。我有点预测到了答案。仍然试图让我的头承诺承诺 - 我理解的概念,但与所有事情一样,与实现和语法的斗争。我认为这可能值得放弃MongoJS吗? – Nodal