sql >> Databáze >  >> NoSQL >> MongoDB

mongoose najít dokument podle referenční vlastnosti

Ve vašem couple model, person1 je ObjectID (vím, že ho znáte), takže zjevně nemá žádnou vlastnost .firstname .

Nejlepším způsobem, jak toho dosáhnout, je najít uživatele podle jeho křestního jména a poté se páru dotazovat pomocí id uživatele.

Tato metoda by mohla/měla by stát v couple model jako statická metoda (ukázka zjednodušeného kódu):

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
}

Stačí jako tento příklad .

EDIT:Všimněte si také, že ref musí být _id (takže nemůžete ukládat s křestním jménem, ​​to by stejně byl špatný nápad).

Vzhledem k vaší úpravě:

Person._id je možná String a odkaz je ObjectId , pokud ano, zkuste:

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

Vaše proměnná je také person a ne Person . Zkuste přihlásit person abyste viděli, jestli něco dostanete.

A konečně, můj ukázkový kód je opravdu jednoduchý, nezapomínejte řešit chyby a tak dále (viz odkaz, který jsem vám dal výše a který je kompletní).




  1. Jak mohu v MongoDB seřadit dokumenty na základě vlastnosti ve vloženém objektu?

  2. MongoDB $degreesToRadians

  3. Nejúčinnější způsob, jak ukládat vnořené kategorie (nebo hierarchická data) v Mongo?

  4. Architektura pro přihlašovací systém na MEAN stack?