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