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