2011-07-28 11 views

Odpowiedz

78

To właśnie pracował dla mnie:

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 
$ 

jestem na mangusta 1.7.2 i działa to dobrze, po prostu zabrakło go ponownie, aby się upewnić.

+1

uzyskać niezdefiniowane do „pokoju” ... – TIMEX

+1

zaktualizowałem to z pełnym testu - współpracuje z mangusta 1.7.2 –

+7

niezdefiniowany obiekt pokój wskazuje błąd podczas zapisu n. jego najlepszą praktyką jest sprawdzenie błędów przed uzyskaniem dostępu do dokumentu. – ChrisMcJava

31

Mongo wysyła kompletny dokument jako obiekt wywołania zwrotnego, dzięki czemu można go pobrać tylko z tego miejsca.

np

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

można uzyskać objectID w mongoosejs po jakiś nowy model.

Używam tego kodu pracę w mangusta 4, można spróbować go w innej wersji

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

lub

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

Można ręcznie wygenerować _id wtedy nie trzeba martw się, że później go wycofasz.

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 
+0

Bardzo pomocne jest, aby wiedzieć, zapobiec asynchroniczny kod, gdy zrobi to synchroniczne. Dzięki! – ryanm

Powiązane problemy