var n = new Chat();
n.name = "chat room";
n.save(function(){
//console.log(THE OBJECT ID that I just saved);
});
我想console.log我刚刚保存的对象的对象ID。我如何在Mongoose中做到这一点?如何在保存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中做到这一点?如何在保存Mongoose中的对象后获取对象ID?
这只是为我工作:
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
$
我对猫鼬1.7.2,这工作得很好,刚跑一遍,以确保万无一失。
Mongo将完整的文档作为回调对象发送,所以您只需从那里获取它。
例如
n.save(function(err,room){
var newRoomId = room._id;
});
你可以在OBJECTID你mongoosejs一些新的模式后。
我用了猫鼬4此代码的工作,你可以尝试在其他版本
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
知道的非常有用,防止异步代码时,同步会做。谢谢! – ryanm
我得到了一个未定义的“房间” ... – TIMEX
我有一个完整的测试更新,这一点 - 与猫鼬1.7.2 –
工作未定义的房间对象表示错误节约的n。在访问文档之前执行错误检查的最佳做法。 – ChrisMcJava