gpt4 book ai didi

Meteor.userId 只能在方法调用中调用。 ( meteor 铁路由器)

转载 作者:行者123 更新时间:2023-12-01 07:59:06 24 4
gpt4 key购买 nike

我正在为我的应用程序使用 IronRouter。最近想打个rest call:

Router.route('/api/hello', { where: 'server' })
.get(function () {
this.response.end('Helo world');
});

我得到了这个异常(exception):

Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions. at AccountsServer.userId (accounts_server.js:80:13) at AccountsServer.user (accounts_common.js:53:23) at Object.Meteor.user (accounts_common.js:230:19) at [object Object]. (lib/routes_permission.js:33:21) at packages/iron_router/lib/router.js:277:1 at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1) at [object Object].hookWithOptions (packages/iron_router/lib/router.js:276:1) at boundNext (packages/iron_middleware-stack/lib/middleware_stack.js:251:1) at runWithEnvironment (packages/meteor/dynamics_nodejs.js:110:1) at packages/meteor/dynamics_nodejs.js:123:1

我在“(lib/routes_permission.js:33:21)”中跟踪了这个问题,似乎一切都很好。

// user with no role
Router.onBeforeAction(function() {
var user = Meteor.user(); //This is the line.
if(user && !user.roles) {
this.render('roles');
return;
}
this.next();
});

我不知道为什么会出现此异常。不过,我的出版物中没有任何 Meteor.userId()。

有什么见解吗?

最佳答案

服务器端路由像 REST 端点一样访问,因此它们没有身份验证的概念(Meteor.userMeteor.userId 会抛出错误) .因为您的 routes_permission.js 文件是在共享目录中定义的,所以它的规则也将被用于服务器路由。关于如何解决这个问题,你有一些选择,但最简单的可能只是用 Meteor.isClient 包装你的 onBeforeAction ,如下所示:

if (Meteor.isClient) {
Router.onBeforeAction(...);
}

关于Meteor.userId 只能在方法调用中调用。 ( meteor 铁路由器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35164369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com