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

mangusta trova un documento per proprietà di riferimento

Nella tua couple modello, person1 è un ObjectID (so che lo conosci), quindi ovviamente non ha alcuna proprietà .firstname .

In realtà il modo migliore per raggiungere questo obiettivo è trovare l'utente in base al suo nome e quindi interrogare la coppia con l'id dell'utente.

Questo metodo potrebbe/dovrebbe stare nella couple modello come metodo statico (esempio di codice semplificato):

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
}

Solo come questo esempio .

EDIT:Nota anche che il ref deve essere il _id (quindi non puoi archiviare con il nome, sarebbe comunque una cattiva idea).

Considerando la tua modifica:

Person._id è forse una String e il riferimento è un ObjectId , in tal caso, prova:

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

Inoltre, la tua variabile è person e non Person . Prova ad accedere a person per vedere se ottieni qualcosa.

Infine, il mio esempio di codice è davvero semplice, non dimenticare di gestire gli errori e tutto il resto (vedi il link che ti ho fornito sopra, che è completo).