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