MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mungo findet ein Dokument anhand der Referenzeigenschaft

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