var n = new Chat();
n.name = "chat room";
n.save(function(){
//console.log(THE OBJECT ID that I just saved);
});
Je veux console.log l'identifiant d'objet de l'objet que je viens de sauvegarder. Comment puis-je faire ça à Mongoose?
Cela a juste fonctionné 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 mangouste 1.7.2 et cela fonctionne très bien, juste lancé à nouveau pour être sûr.
Mongo envoie le document complet en tant qu'objet callback afin que vous puissiez simplement l'obtenir à partir de là seulement.
par exemple
n.save(function(err,room){
var newRoomId = room._id;
});
Vous pouvez générer manuellement le _id sans avoir à vous soucier de le retirer plus tard.
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
vous pouvez obtenir objectid dans mongoosejs après avoir créé un nouveau modèle.
j'utilise ce code fonctionne dans mangouste 4, vous pouvez l'essayer dans une autre version
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));
Avec save
, il vous suffit de:
n.save((err, room) => {
if (err) return `Error occurred while saving ${err}`;
const { _id } = room;
console.log(`New room id: ${_id}`);
return room;
});
Juste au cas où quelqu'un se demanderait comment obtenir le même résultat en utilisant create
:
const array = [{ type: 'Jelly bean' }, { type: 'snickers' }];
Candy.create(array, (err, candies) => {
if (err) // ...
const [jellybean, snickers] = candies;
const jellybeadId = jellybean._id;
const snickersId = snickers._id;
// ...
});