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.