El ejemplo de los documentos de mongoose a los que hizo referencia usa Number
para personSchema._id
campo y ObjectId
para los demás.
Supongo que hacen esto en el ejemplo solo para demostrar que es posible usar cualquiera de los dos. Si no especifica _id
en el esquema, ObjectId
será el predeterminado.
Aquí, todos sus registros tienen un _id
campo que es un ObjectId
, sin embargo, los estás tratando como números. Además, campos como personID
y taskID
no existen, a menos que haya omitido la parte donde los define.
Si desea utilizar números para todos sus _id
campos, tendría que definir eso en los esquemas.
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
Luego, para crear una noticia con una identificación particular y asignarla a un creador:
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
Sin embargo, lo que hay que tener en cuenta aquí es que cuando usa algo que no sea ObjectId
como el _id
usted mismo asume la responsabilidad de administrar estos valores. Los ObjectIds se generan automáticamente y no requieren administración adicional.
Editar:también noté que está almacenando referencias en ambos lados de sus asociaciones. Esto es totalmente válido y es posible que desee hacerlo a veces, pero tenga en cuenta que debe encargarse de almacenar las referencias usted mismo en el pre
gancho.