我在保存Mongoose中的对象后如何获得对象ID?

var n = new Chat(); n.name = "chat room"; n.save(function(){ //console.log(THE OBJECT ID that I just saved); }); 

我想console.log我刚刚保存的对象的对象ID。 我如何在Mongoose中做到这一点?

这只是为我工作:

 var mongoose = require('mongoose'), Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/lol', function(err) { if (err) { console.log(err) } }); var ChatSchema = new Schema({ name: String }); mongoose.model('Chat', ChatSchema); var Chat = mongoose.model('Chat'); var n = new Chat(); n.name = "chat room"; n.save(function(err,room) { console.log(room.id); }); $ node test.js 4e3444818cde747f02000001 $ 

我在mongoose1.7.2,这工作得很好,只是再次运行,以确保。

Mongo作为callback对象发送完整的文档,所以你只能从那里得到它。

例如

 n.save(function(err,room){ var newRoomId = room._id; }); 

新的模型后,你可以在mongoosejs中获得objectid。

我使用这个代码工作在mongoose4,您可以在其他版本中尝试

 var n = new Chat(); var _id = n._id; 

要么

 n.save((function (_id) { return function () { console.log(_id); // your save callback code in here }; })(n._id)); 

你可以手动生成_id,那么你不必担心以后再把它拉出来。

 var mongoose = require('mongoose'); var myId = mongoose.Types.ObjectId(); // then set it manually when you create your object _id: myId // then use the variable wherever