Exemplet från mongoose-dokumenten du refererade till använder Number
för personSchema._id
och ObjectId
för de andra.
Jag antar att de gör detta i exemplet bara för att visa att det är möjligt att använda antingen. Om du inte anger _id
i schemat, ObjectId
kommer att vara standard.
Här har alla dina poster ett _id
fält som är ett ObjectId
, men du behandlar dem som siffror. Dessutom fält som personID
och taskID
existerar inte, om du inte har utelämnat den del där du definierar dem.
Om du ville använda siffror för alla dina _id
fält, måste du definiera det i schemana.
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
Sedan för att skapa en nyhet med ett visst ID och tilldela det till en skapare:
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
Men saken att notera här är att när du använder något annat än ObjectId
som _id
du tar på dig ansvaret för att hantera dessa värden själv. Objekt-ID:n genereras automatiskt och kräver ingen extra hantering.
Edit:Jag märkte också att du lagrar refs på båda sidor av dina associationer. Detta är helt giltigt och du kanske vill göra det ibland, men observera att du måste ta hand om att lagra referenserna själv i pre
krok.