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