L'exemple de la documentation sur la mangouste que vous avez référencée utilise Number
pour le personSchema._id
champ et ObjectId
pour les autres.
Je suppose qu'ils le font dans l'exemple uniquement pour démontrer qu'il est possible d'utiliser l'un ou l'autre. Si vous ne spécifiez pas _id
dans le schéma, ObjectId
sera la valeur par défaut.
Ici, tous vos enregistrements ont un _id
champ qui est un ObjectId
, pourtant vous les traitez comme des numéros. De plus, des champs comme personID
et taskID
n'existent pas, sauf si vous avez omis la partie où vous les définissez.
Si vous vouliez utiliser des chiffres pour tous vos _id
champs, vous devrez définir cela dans les schémas.
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
Ensuite, pour créer une actualité avec un identifiant particulier, et l'attribuer à un créateur :
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
Cependant, la chose à noter ici est que lorsque vous utilisez autre chose que ObjectId
comme _id
domaine, vous assumez la responsabilité de gérer vous-même ces valeurs. Les ObjectIds sont générés automatiquement et ne nécessitent aucune gestion supplémentaire.
Edit :J'ai également remarqué que vous stockez des références des deux côtés de vos associations. Ceci est tout à fait valable et vous voudrez peut-être le faire parfois, mais notez que vous devrez prendre soin de stocker vous-même les références dans le pre
crochet.