J'ai deux modèles: User
, associé par une référence un-à-plusieurs avec Member
.Voiles/ligne de flottaison: obtenir des valeurs de promesses dans le modèle
Je veux récupérer le prenom & lastName de User
du modèle Member
, de sorte que j'ai ajouté une fonction getName
à Member
, qui d'abord remplir le champ « utilisateur », puis retourne une valeur lorsqu'elle est appelée à partir d'un modèle comme ceci:
<p><%= data.members[i].getName() %></p>
Mais je ne reçois que « non défini » dans le modèle (alors que je peux imprimer les bonnes valeurs dans la console à l'intérieur de la fonction getName). Je suppose que cela est dû au fait que puisque je dois interroger la base, getName va async et renvoie une promesse.
Voici mes modèles:
/**
* User.js
*/
module.exports = {
attributes : {
firstName : 'string',
lastName : 'string',
}
}
/**
* Member.js
*/
module.exports = {
attributes : {
user : {
model : 'User'
},
getName: function() {
return Member
.findOne({ id : this.id })
.populate('user')
.exec(function(err, member) {
if(err) return err;
return member.user.firstName +' '+ member.user.lastName;
});
}
}
}
quelqu'un peut me aider en me disant ce qui ne va pas avec mon code?
P.S. : Cela peut être résolu en remplissant le champ 'user' du contrôleur au lieu du modèle, mais j'ai un autre problème comme celui-ci qui suivrait les mêmes principes.
Il ressemble à ce numéro: https://stackoverflow.com/questions/22823796/sails-js-get-async-data-from-an-ejs-file?rq=1 Pas très prometteur dans mon cas .. . – Paul