我在保存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