【发布时间】:2015-01-31 05:47:18
【问题描述】:
我有以下流星方法
hasNoPendingPayments: function() {
var userId = Meteor.userId();
console.log(userId); <---------------------- correctly logs userId
var user = Users.findOne({_id: userId }, { fields: { services: 0 } });
console.log(user); <-------------------------- logs 'undefined'
return hasNoPendingPayments(user);
},
我从上面调用的这个私人助手
hasNoPendingPayments = function(user) {
// console.log('hasNoPendingPayments ');
// console.log(user);
var payments = Payments.find({ userId: user._id, status: {
$in: [Payments.States.PENDING, Payments.States.PROCESSING]}
});
return payments.count() === 0;
};
我在这里从客户端调用它
Template.payments.created = function() {
this.hasNoPendingPayments = new ReactiveVar(false);v
};
Template.payments.rendered = function () {
Session.set('showPaymentRequestForm', false);
var self = this;
Meteor.call('hasNoPendingPayments', function(error, result) {
if (result === true) { self.hasNoPendingPayments.set(true); }
});
...
但是,当我最初加载模板时,我在服务器上收到了一个未定义的错误(我在代码中标记了位置)。虽然,当我尝试使用相同的 userId 在客户端上调用相同的查询时,我正确地获取了用户记录
知道这是为什么吗?
【问题讨论】:
-
我们确定用户在
payments模板渲染的时候已经登录了吗?如果他/她正在登录,那么你可能会得到这种行为。
标签: meteor