【发布时间】:2017-08-10 10:06:18
【问题描述】:
我有两个模型:User,通过与 Member 的一对多引用关联。
我想从Member 模型中检索User 的名字和姓氏,所以我添加了一个函数getName 到Member,它将首先填充“用户”字段然后返回从这样的模板调用时的值:
<p><%= data.members[i].getName() %></p>
但我只在模板中得到“未定义”(而我可以从 getName 函数内部在控制台中打印好的值)。我猜这是因为我必须查询基数,所以 getName 会异步并返回一个 Promise。
这是我的模型:
/**
* 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;
});
}
}
}
有人可以告诉我我的代码有什么问题吗?
附: :这可以通过从控制器而不是模型填充“用户”字段来解决,但我有另一个类似这样的问题,它遵循相同的原则。
【问题讨论】:
-
看起来像这个问题:stackoverflow.com/questions/22823796/… 在我的情况下不是很有希望......
标签: promise sails.js ejs waterline