无法理解为什么它会用以下错误限制我从路由访问Meteor.userId():
错误: Meteor.userId只能在方法调用中调用。在发布函数中使用this.userId。在(packages/accounts-base/accounts_server.js:82:13) at Object.Meteor.userId,(packages/accounts-base/accounts_common.js:223:19) at Object.get,作为行动 at Route.share.Route.Route._callEndpoint,(packages/nimble_restivus/lib/route.coffee:147:25) at packages/nimble_restivus/lib/route.coffee:59:33 /simple_json-Programes.js:98:9
看上去我好像忘了出版什么东西。但是:
**使用Meteor.publish()设置了一些数据订阅,但是 **你仍然打开了自动驾驶系统。因为自动驾驶仍然是 ** on,您的Meteor.publish()调用不会有多大影响。所有数据 **仍将发送给所有客户。
很奇怪,你是怎么解决这个问题的?我刚接触过流星,但我不知道如何解决这个问题(谷歌也不知道)。
代码服务器/main.js
import { Meteor } from 'meteor/meteor'
Meteor.startup(() => {
var Api = new Restivus({
apiPath: 'api/',
useDefaultAuth: true,
prettyJson: true
});
Api.addRoute('test', {
get: function () {
console.log(this.userId())
return {}
}
});
});发布于 2016-04-15 22:43:54
当您在Restivus中时,this不是流星上下文。所以你需要把它说清楚:
Meteor.startup(() => {
var self = this; //<--- here explicitly declare this
var Api = new Restivus({
apiPath: 'api/',
useDefaultAuth: true,
prettyJson: true
});
Api.addRoute('test', {
get: function () {
console.log(self.userId()) //<-- use it like this
return {}
}
});
});发布于 2016-04-16 07:09:05
这是艰难的一天,试图解决无法解决的事情。我不知道该怎么想,也许是我试着用流星像用另一种工具一样工作的错。正如皮埃尔所说:
如果客户端没有讨论DDP,您就无法对用户进行身份验证,当您想要向客户提供API端点时,这是非常糟糕的。
看来他是对的。我只是想用错误的方法使用这个工具。但我想说的是,流星必须把引用从皮埃尔到主页内的h1标签在页面的中心,我相信这里有很多人试图使不受支持的东西使用不适当的工具。
是啊,甚至看起来都很有趣..。(今天)
https://stackoverflow.com/questions/36655330
复制相似问题