No seu
couple
modelo, person1
é um ObjectID (eu sei que você sabe disso), então obviamente não tem nenhuma propriedade .firstname
. Na verdade, a melhor maneira de conseguir isso é encontrar o usuário pelo primeiro nome e, em seguida, consultar o casal, com o
id
do usuário. Este método pode/deve estar no
couple
model como um método estático (amostra de código simplificada):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
}
Apenas curta este exemplo .
EDIT:Observe também que o ref deve ser o
_id
(então você não poderia armazenar com o primeiro nome, isso seria uma má ideia de qualquer maneira). Considerando sua edição:
Person._id
talvez seja uma String
e a referência é um ObjectId
, se sim, tente:{person1: mongoose.Types.ObjectId(Person._id)}
Além disso, sua variável é
person
e não Person
. Tente registrar person
para ver se você consegue alguma coisa. Por fim, meu exemplo de código é bem simples, não se esqueça de lidar com erros e tudo mais (veja o link que dei acima, que está completo).