var n = new Chat();
n.name = "chat room";
n.save(function(){
//console.log(THE OBJECT ID that I just saved);
});
Je veux consoler.log l'identifiant de l'objet que je viens d'enregistrer. Comment puis-je faire cela dans Mongoose?
var n = new Chat();
n.name = "chat room";
n.save(function(){
//console.log(THE OBJECT ID that I just saved);
});
Je veux consoler.log l'identifiant de l'objet que je viens d'enregistrer. Comment puis-je faire cela dans Mongoose?
Cela vient de fonctionner pour moi:
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
$
Je suis sur mongoose 1.7.2 et cela fonctionne très bien, il suffit de le relancer pour être sûr.
Vous pouvez obtenir l'identifiant de l'objet dans Mongoose juste après avoir créé une nouvelle instance d'objet sans avoir à l'enregistrer dans la base de données.
J'utilise ce code dans mongoose 4. Vous pouvez l'essayer dans d'autres versions.
var n = new Chat();
var _id = n._id;
ou
n.save((function (_id) {
return function () {
console.log(_id);
// your save callback code in here
};
})(n._id));
D'autres réponses ont mentionné l'ajout d'un rappel, je préfère utiliser .then()
n.name = "chat room";
n.save()
.then(chatRoom => console.log(chatRoom._id));
exemple de la doc :.
var gnr = new Band({
name: "Guns N' Roses",
members: ['Axl', 'Slash']
});
var promise = gnr.save();
assert.ok(promise instanceof Promise);
promise.then(function (doc) {
assert.equal(doc.name, "Guns N' Roses");
});
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.