Dans votre couple
modèle, person1
est un ObjectID (je sais que vous le connaissez), donc il n'a évidemment pas de propriété .firstname
.
En fait, la meilleure façon d'y parvenir est de trouver l'utilisateur par son prénom, puis d'interroger le couple, avec l'id
de l'utilisateur.
Cette méthode pourrait/devrait être dans le couple
modèle en tant que méthode statique (exemple de code simplifié) :
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
}
Juste comme cet exemple .
EDIT :Notez également que la référence doit être le _id
(donc vous ne pourriez pas stocker avec le prénom, ce serait de toute façon une mauvaise idée).
Compte tenu de votre modification :
Person._id
est peut-être une String
et la référence est un ObjectId
, si oui, essayez :
{person1: mongoose.Types.ObjectId(Person._id)}
De plus, votre variable est person
et non Person
. Essayez de connecter person
pour voir si vous obtenez quelque chose.
Enfin, mon exemple de code est vraiment simple, n'oubliez pas de gérer les erreurs et tout (voir le lien que je vous ai donné plus haut, qui est complet).