In Ihrem couple
Modell, person1
ist eine ObjectID (ich weiß, Sie kennen sie), also hat sie offensichtlich keine Eigenschaft .firstname
.
Der beste Weg, dies zu erreichen, besteht darin, den Benutzer anhand seines Vornamens zu finden und dann das Paar mit der id
abzufragen des Benutzers.
Diese Methode könnte/sollte im couple
stehen Modell als statische Methode (vereinfachtes Codebeispiel):
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
}
Einfach wie dieses Beispiel .
BEARBEITEN:Beachten Sie auch, dass die Referenz die _id
sein muss (Sie könnten also nicht mit dem Vornamen speichern, das wäre sowieso eine schlechte Idee).
In Anbetracht Ihrer Änderung:
Person._id
ist vielleicht ein String
und die Referenz ist eine ObjectId
, wenn ja, versuchen Sie:
{person1: mongoose.Types.ObjectId(Person._id)}
Außerdem ist Ihre Variable person
und nicht person
. Versuchen Sie, person
anzumelden um zu sehen, ob du etwas bekommst.
Schließlich ist mein Codebeispiel wirklich einfach, vergessen Sie nicht, Fehler und alles zu behandeln (siehe den Link, den ich Ihnen oben gegeben habe, der vollständig ist).