2016-01-20 52 views
0

我正在使用MongoDB(目前使用Mongojs)开发NodeJS快速应用程序,但无法弄清楚如何使用它执行某些操作。如何在插入时获取MongoDB对象的唯一标识

我需要将一个对象插入到一个集合中,并立即获取这个新插入的唯一标识符作为变量存储,以便稍后在应用程序中使用。我对使用Mongo非常陌生,但据我所知,有一个'_id'字段会自动生成为任何集合的主键。这看起来像我需要的,纠正我,如果我错了。

任何援助将不胜感激。 再次感谢。

回答

1

随着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" 
    } 
    */ 
}); 
+0

这是令人难以置信的冷静。有没有办法从回调函数中获取该值? – Nodal

+1

@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

+0

再次感谢。我有点预测到了答案。仍然试图让我的头承诺承诺 - 我理解的概念,但与所有事情一样,与实现和语法的斗争。我认为这可能值得放弃MongoJS吗? – Nodal