Eksemplet fra mongoose-dokumenterne, du refererede til, bruger Number
for personSchema._id
felt og ObjectId
for de andre.
Jeg formoder, at de gør dette i eksemplet kun for at demonstrere, at det er muligt at bruge enten. Hvis du ikke angiver _id
i skemaet, ObjectId
vil være standard.
Her har alle dine poster en _id
felt, som er et ObjectId
, men alligevel behandler du dem som tal. Desuden felter som personID
og taskID
eksisterer ikke, medmindre du har udeladt den del, hvor du definerer dem.
Hvis du ønskede at bruge tal til alle dine _id
felter, skal du definere det i skemaerne.
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
For derefter at oprette en nyhed med et bestemt ID og tildele den til en skaber:
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
Men tingen at bemærke her er, at når du bruger noget andet end ObjectId
som _id
felt, påtager du dig selv ansvaret for at administrere disse værdier. ObjectId'er er autogenereret og kræver ingen ekstra administration.
Edit:Jeg har også bemærket, at du gemmer refs på begge sider af dine associationer. Dette er fuldstændig gyldigt, og du vil måske gøre det nogle gange, men bemærk, at du selv skal sørge for at gemme referencerne i pre
krog.