gpt4 book ai didi

javascript - 使用 Flow Router 检查每个路由中是否存在用户

转载 作者:行者123 更新时间:2023-12-03 08:25:30 26 4
gpt4 key购买 nike

我在 Meteor 中有一个用户个人资料。

我正在使用 Flow Router。

我想检查该用户是否存在于每条路线上。

我已经尝试过

const userRedirect = ( context, redirect, stop ) => {
let userId = FlowRouter.getParam( 'userId' );

if ( Meteor.users.find( { _id: userId } ).count() === 0 ) {
FlowRouter.go( 'userList' );
}
};

const projectRoutes = FlowRouter.group( {
name: 'user',
triggersEnter: [ userRedirect ]
} );

userRoutes.route( '/users/:userId', {
name: 'userDetail',
action: function ( params, queryParams ) {
BlazeLayout.render( 'default', { yield: 'userDetail' } );
},
} );

但它不起作用。

我猜是因为我还没有订阅用户集合。

我怎样才能在 route 做到这一点?我应该使用

const userRedirect = ( context, redirect, stop ) => {
let userId = FlowRouter.getParam( 'userId' );

// subscribe to user
Template.instance().subscribe( 'singleUser', userId );

// check if found
if ( Meteor.users.find( { _id: userId } ).count() === 0 ) {
FlowRouter.go( 'userList' );
}
};

编辑

我尝试使用检查模板

Template.userDetail.onCreated( () => {
var userId = FlowRouter.getParam( 'userId' );
Template.instance().subscribe( 'singleUser', userId );
});

Template.userDetail.helpers( {
user: function () {
var userId = FlowRouter.getParam( 'userId' );
var user = userId ? Meteor.users.findOne( userId ) : null;
return user;
},
} );

但它只会使用变量 user 填充模板,该变量可以是用户对象,也可以是 null。

我想将 Flow Router 提供的 notFound 配置用于不存在的路由。我想这也可以应用于“不存在的数据”。

因此,如果路由路径为 /users/:userId 并且具有特定 userId 的用户不存在,则路由器应将该路由解释为无效路径。

最佳答案

FlowRouter documentation on auth logic and permissions建议在模板中控制向未登录用户和已登录用户显示哪些内容,而不是在路由器本身中进行控制。铁路由器模式通常在路由器中进行身份验证。

对于您最近问题中的具体问题:

html:

{{#if currentUser}}
{{> yield}}
{{else}}
{{> notFoundTemplate}}
{{/if}}

要使用触发器进行重定向,请尝试以下操作:

FlowRouter.route('/profile', {
triggersEnter: [function(context, redirect) {
if ( !Meteor.userId() ) redirect('/some-other-path');
}]
});

请注意,即使 Meteor.user() 尚未加载,Meteor.userId() 也存在。

docs

关于javascript - 使用 Flow Router 检查每个路由中是否存在用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569957/

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