1

我最近开始使用 Meteor(与 React 结合使用),但有些事情我无法理解。

假设有一个视图,用户将看到他的“东西”,但管理员帐户将看到所有“东西”。

在客户端我有这个代码:

getMeteorData() {
    let handle = Meteor.subscribe('myData');

    return {
      stuffReady: handle.ready(),
      stuff: handle.ready() ? Stuff.find({},{sort: {'createdAt': -1}}).fetch() : undefined
    };
},

在服务器上我有我的发布方法:

Meteor.publish('myData', function () {
    if (this.userId) {
        // if admin show all, otherwise show users stuff
        if (Roles.userIsInRole(this.userId, ['admin'], 'default')) {
            return Stuff.find({},{sort: {'createdAt': -1}});
        }
        else {
            return Stuff.find({'creator._id': this.userId}, {sort: {'createdAt': -1}});
        }
    }
});

这对管理员来说工作正常。用户虽然可以在列表被过滤之前看到所有类似 1 的东西,但他只能看到他的东西。我认为这是预期的行为,因为我在 getMeteorData() 的返回方法中查询了所有数据。

不过我的问题是:如何立即为用户返回正确的数据?出于明显的原因,我不想在客户端代码中进行“管理员检查”。

4

0 回答 0