我在Meteor.methods中遇到了一个函数问题。
目前,它是:
click: function () {
Meteor.users.update({_id: this.userId}, {$inc: {'money': 25 }});
}
但是,我想通过存储在用户手册中的变量变量来增加资金。像这样:
click: function () {
Meteor.users.update({_id: this.userId}, {$inc: {'money': user.manual }});
}
但是,当我尝试这样做时,我收到了这个错误:
I20140131-16:33:40.876(-5)? Exception while invoking method 'click' ReferenceError: user is not defined
I20140131-16:33:40.876(-5)? at Meteor.methods.click (app/server/server.js:29:62)
I20140131-16:33:40.876(-5)? at maybeAuditArgumentChecks (packages/livedata/livedata_server.js:1346)
I20140131-16:33:40.876(-5)? at packages/livedata/livedata_server.js:539
I20140131-16:33:40.876(-5)? at _.extend.withValue (packages/meteor/dynamics_nodejs.js:35)
I20140131-16:33:40.877(-5)? at packages/livedata/livedata_server.js:538
I20140131-16:33:40.877(-5)? at _.extend.withValue (packages/meteor/dynamics_nodejs.js:35)
I20140131-16:33:40.877(-5)? at _.extend.protocol_handlers.method (packages/livedata/livedata_server.js:537)
I20140131-16:33:40.877(-5)? at packages/livedata/livedata_server.js:437
这是我的onCreateUser方法:
Accounts.onCreateUser(function(options, user) {
user.money = 0;
user.rate = 1;
user.manual = 25;
return user;
})
我在user.rate文件的另一部分也成功地用户user.rate:
Meteor.startup(function () {
Meteor.setInterval(function() {
Meteor.users.find({}).map(function(user) {
Meteor.users.update({_id: user._id}, {$inc: {'money': user.rate}})
});
}, 1000)
});
当我将user.rate更改为user.manual时,money会按user.manual值递增。所以我很困惑为什么user.manual不能在Meteor.methods中工作。为什么说用户没有定义?
谢谢!
答案 0 :(得分:1)
错误告诉您到底出了什么问题。
ReferenceError: user is not defined
您应该使用Meteor.user()
。
Meteor.user()Anywhere,但发布函数
获取当前用户记录,如果没有用户登录,则返回null 反应数据源。