L'esempio dei documenti mongoose a cui hai fatto riferimento utilizza Number
per personSchema._id
campo e ObjectId
per gli altri.
Presumo che lo facciano nell'esempio solo per dimostrare che è possibile utilizzare entrambi. Se non specifichi _id
nello schema, ObjectId
sarà l'impostazione predefinita.
Qui, tutti i tuoi record hanno un _id
campo che è un ObjectId
, eppure li stai trattando come numeri. Inoltre, campi come personID
e taskID
non esistono, a meno che tu non abbia omesso la parte in cui le definisci.
Se volevi usare i numeri per tutti i tuoi _id
campi, dovresti definirlo negli schemi.
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
Quindi per creare una notizia con un ID particolare e assegnarla a un creatore:
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
Tuttavia, la cosa da notare qui è che quando usi qualcosa di diverso da ObjectId
come _id
campo, ti stai assumendo la responsabilità di gestire questi valori da solo. Gli ObjectId vengono generati automaticamente e non richiedono alcuna gestione aggiuntiva.
Modifica:ho anche notato che stai memorizzando i riferimenti su entrambi i lati delle tue associazioni. Questo è assolutamente valido e potresti volerlo fare a volte, ma tieni presente che dovresti occuparti di memorizzare i riferimenti tu stesso nel pre
gancio.