我刚刚完成了我的应用程序的草稿,并认为是时候删除自动发布和不安全模式了。我开始将我在客户端调用的所有杂散更新和插入方法转移到方法中。但是现在我无法从 ID 返回用户名。
我之前的功能:(有效,直到我删除了自动发布)
challenger: function() {
var postId = Session.get('activePost');
var post = Posts.findOne(postId);
if (post.challenger !== null) {
var challenger = Meteor.users.findOne(post.challenger);
return challenger.username;
}
return false;
}
现在我正在尝试:
Template.lobby.helpers({
challenger: function() {
var postId = Session.get('activePost');
var post = Posts.findOne(postId);
if (post.challenger !== null) {
var userId = post.challenger;
Meteor.call('getUsername', userId, function (err, result) {
if (err) {
console.log(err);
}
return result;
});
}
return false;
},
使用:
Meteor.methods({
getUsername: function(userId) {
var user = Meteor.users.findOne({_id: userId});
var username = user.username;
return username;
},
...
})
我尝试阻止代码,仅在定义后才返回值,并在调用回调中调用 console.logging(将正确的用户名返回到控制台,但视图保持不变)
希望有人能找到我正在犯的明显错误,因为我已经尝试了 3 个小时,但我无法弄清楚为什么该值会在控制台中返回但没有返回到模板中。