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