W Twojej couple modelka, person1 jest ObjectID (wiem, że go znasz), więc nie ma oczywiście żadnej właściwości .firstname .
Właściwie najlepszym sposobem na osiągnięcie tego jest znalezienie użytkownika według jego imienia, a następnie zapytanie pary za pomocą id użytkownika.
Ta metoda może/powinna znaleźć się w couple model jako metoda statyczna (uproszczony przykład kodu):
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
}
Po prostu jak ten przykład .
EDYCJA:Zauważ również, że ref musi być _id (więc nie możesz przechowywać z imieniem, i tak byłby to zły pomysł).
Rozważając edycję:
Person._id może być String a odniesienie to ObjectId , jeśli tak, spróbuj:
{person1: mongoose.Types.ObjectId(Person._id)}
Twoja zmienna to person a nie Person . Spróbuj zalogować person aby zobaczyć, czy coś otrzymasz.
Wreszcie, mój przykładowy kod jest naprawdę prosty, nie zapomnij poradzić sobie z błędami i wszystkim (patrz link, który podałem powyżej, który jest kompletny).