sql >> Databasteknik >  >> NoSQL >> MongoDB

mongoose hitta ett dokument genom referensegenskap

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




  1. Gör en Twitter-liknande tidslinje med MongoDB

  2. ObjectID lagrar inte hexadecimalt värde

  3. Hur kan jag synkronisera en produktionsmeteor js-databas med utveckling?

  4. Hantering av relationer i meteorvinkel