sql >> Database teknologi >  >> NoSQL >> MongoDB

mongoose finde et dokument ved referenceegenskab

I dit couple model, person1 er et ObjectID (jeg ved, du kender det), så det har ingen åbenlyst ingen egenskab .firstname .

Den bedste måde at opnå dette på er faktisk at finde brugeren ved dets fornavn og derefter forespørge parret med id af brugeren.

Denne metode kunne/bør stå i couple model som en statisk metode (forenklet kodeeksempel):

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
}
 

Bare synes godt om dette eksempel .

EDIT:Bemærk også, at refen skal være _id (så du kunne ikke gemme med fornavnet, det ville alligevel være en dårlig idé).

I betragtning af din redigering:

Person._id er måske en String og referencen er et ObjectId , hvis ja, prøv:

{person1: mongoose.Types.ObjectId(Person._id)}

Din variabel er også person og ikke Person . Prøv at logge person for at se, om du får noget.

Endelig er mit kodeeksempel virkelig simpelt, glem ikke at håndtere fejl og det hele (se linket, jeg gav dig ovenfor, som er komplet).




  1. Redis/Jedis - Slet efter mønster?

  2. MongoDB:Sorter efter matrixindeks

  3. Sådan bygger du en URL Shortener med Node.js og MongoDB

  4. hvordan man får adgang til socketsession i alle klynger