I ditt couple
modell, person1
är ett objekt-ID (jag vet att du vet det), så det har ingen uppenbarligen ingen egenskap .firstname
.
Det bästa sättet att uppnå detta är faktiskt att hitta användaren efter dess förnamn och sedan fråga paret med id
av användaren.
Denna metod kan/bör stå i couple
modell som en statisk metod (förenklat kodexempel):
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
}
Bara gilla det här exemplet .
EDIT:Observera också att refen måste vara _id
(så att du inte kunde lagra med förnamnet, det vore en dålig idé i alla fall).
Med tanke på din redigering:
Person._id
är kanske en String
och referensen är ett ObjectId
, försök i så fall:
{person1: mongoose.Types.ObjectId(Person._id)}
Dessutom är din variabel person
och inte Person
. Försök att logga person
för att se om du får något.
Slutligen, mitt kodexempel är väldigt enkelt, glöm inte att hantera fel och allt (se länken jag gav dig ovan, som är komplett).