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).