est-il un moyen pour générer automatiquement ObjectId quand une mangouste Modèle qui est nouveau, ed?

est-il un moyen de déclarer un schéma du Modèle de la mangouste, de sorte que, lorsque le modèle est nouveau ed le champ _id serait de générer automatiquement?

par exemple:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectIdSchema = Schema.ObjectId;
var ObjectId = mongoose.Types.ObjectId;

var PersonSchema = new Schema({
    _id:            ObjectIdSchema,
    firstName:      {type: String, default: 'N/A'},
    lastName:       {type: String, default: 'N/A'},
    age:            {type: Number, min: 1}
});

var Person = mongoose.model('Person', PersonSchema);

au début, je pensais super!, je vais le faire

_id:    {type:ObjectIdSchema, default: new ObjectId()}

mais bien sûr, cela ne fonctionne pas, car de nouveaux ObjectId() est appelée uniquement sur initialiser le schéma. afin d'appeler les nouveaux Persion() deux fois crée deux objets avec le même _id valeur.

donc, il y a un moyen de le faire, de sorte que chaque fois que je fais "new Personne()" qu'une nouvelle ObjectId() est généré?

la raison pour laquelle je suis en train de le faire c'est parce que j'ai besoin de connaître la valeur de la nouvelle personne _id valeur pour la poursuite du traitement.

j'ai aussi essayé:

var person = new Person({firstName: "Joe", lastName: "Baz"});
person.save(function(err, doc, num){
    console.log(doc._id);
});

même alors, le doc ne contient pas de ObjectId. mais si je regarde dans la base de données, il ne contient pas.

p.s. je suis l'aide de la mangouste 2.7.1

p.p.s. je sais que je peux créer manuellement le champ ObjectId lors de la création de la personne en tant que telle:

var person = new Person({_id: new ObjectId(), firstName: "Joe", lastName: "Baz"});

mais je préfère ne pas avoir à importer ObjectId et ont à nouveau chaque fois que je veux à nouveau une Personne. suppose que je suis habitué à l'aide du pilote java pour mongodb, où je peux juste créer de la valeur pour le champ _id dans le Modèle de constructeur.

OriginalL'auteur Khon | 2012-07-22