En tu couple
modelo, person1
es un ObjectID (sé que lo sabe), por lo que obviamente no tiene ninguna propiedad .firstname
.
En realidad, la mejor manera de lograr esto es encontrar al usuario por su nombre y luego consultar a la pareja, con el id
del usuario.
Este método podría/debería estar en la couple
modelo como método estático (ejemplo de código simplificado):
couple.statics.findByPersonFirstname = function (firstname, callback) {
var query = this.findOne()
Person.findOne({firstname: firstname}, function (error, person) {
query.where($or: [
{person1: person._id},
{person1: person._id}
]).exec(callback);
})
return query
}
Solo Me gusta este ejemplo .
EDITAR:también tenga en cuenta que la referencia debe ser _id
(así que no podría almacenar con el primer nombre, sería una mala idea de todos modos).
Teniendo en cuenta tu edición:
Person._id
es quizás una String
y la referencia es un ObjectId
, si es así, intente:
{person1: mongoose.Types.ObjectId(Person._id)}
Además, su variable es person
y no Person
. Intenta registrar a person
a ver si te sale algo.
Finalmente, mi ejemplo de código es realmente simple, no olvides manejar los errores y todo (ver el enlace que te di arriba, que está completo).