Het voorbeeld van de mangoestdocumenten waarnaar u verwijst, gebruikt Number
voor de personSchema._id
veld, en ObjectId
voor de anderen.
Ik neem aan dat ze dit in het voorbeeld alleen doen om aan te tonen dat het mogelijk is om beide te gebruiken. Als u _id
niet opgeeft in het schema, ObjectId
zal de standaard zijn.
Hier hebben al uw records een _id
veld dat een ObjectId
. is , maar je behandelt ze als getallen. Verder kunnen velden als personID
en taskID
bestaan niet, tenzij je het gedeelte hebt weggelaten waar je ze definieert.
Als je cijfers wilt gebruiken voor al je _id
velden, moet u dat in de schema's definiëren.
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
Om vervolgens een nieuwsbericht met een bepaalde ID te maken en het toe te wijzen aan een maker:
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
Het ding om hier op te merken is echter dat wanneer u iets anders gebruikt dan ObjectId
als de _id
veld, neemt u zelf de verantwoordelijkheid op zich om deze waarden te beheren. ObjectIds worden automatisch gegenereerd en vereisen geen extra beheer.
Bewerken:ik heb ook gemerkt dat je refs aan beide kanten van je associaties opslaat. Dit is volkomen geldig en misschien wil je het soms doen, maar houd er rekening mee dat je zelf voor het opslaan van de referenties moet zorgen in de pre
haak.