Das Beispiel aus den Mongoose-Dokumenten, auf die Sie verwiesen haben, verwendet Number
für personSchema._id
Feld und ObjectId
für die anderen.
Ich nehme an, sie tun dies im Beispiel nur, um zu demonstrieren, dass es möglich ist, beides zu verwenden. Wenn Sie _id
nicht angeben im Schema ObjectId
wird die Standardeinstellung sein.
Hier haben alle Ihre Datensätze eine _id
Feld, das eine ObjectId
ist , aber Sie behandeln sie wie Zahlen. Außerdem Felder wie personID
und taskID
existieren nicht, es sei denn, Sie haben den Teil weggelassen, in dem Sie sie definieren.
Wenn Sie Zahlen für alle Ihre _id
verwenden möchten Felder, müssten Sie das in den Schemas definieren.
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
Um dann eine Nachricht mit einer bestimmten ID zu erstellen und sie einem Ersteller zuzuweisen:
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
Beachten Sie hier jedoch Folgendes:Wenn Sie etwas anderes als ObjectId
verwenden als _id
übernehmen Sie die Verantwortung, diese Werte selbst zu managen. ObjectIds werden automatisch generiert und erfordern keine zusätzliche Verwaltung.
Bearbeiten:Mir ist auch aufgefallen, dass Sie Refs auf beiden Seiten Ihrer Assoziationen speichern. Dies ist völlig gültig und Sie möchten es vielleicht manchmal tun, aber beachten Sie, dass Sie sich selbst darum kümmern müssten, die Referenzen im pre
zu speichern Haken.