0

サーバーからすべての管理者ユーザーを公開しようとしています

サーバーでは次のようになります。

Meteor.publish("users_with_roles", function (options, role) {
    //{fields: {emails: 1, profile: 1}}
    Counts.publish(this, 'numberOfUsers', Meteor.users.find({$and:[
            {'roles.tripro': {$exists: true}},
            {'roles.tripro': role}
        ]}),
        { noReady: true });

    return Meteor.users.find({
            $and:[
                    {'roles.tripro': {$exists: true}},
                    {'roles.tripro': role}
                 ]
        }, options);
});

次に、クライアント側で、これをサブスクライブしようとしています:

$meteor.autorun($scope, function() {
        $meteor.subscribe('users_with_roles', {
            limit: parseInt($scope.getReactively('perPage')),
            skip: (parseInt($scope.getReactively('page')) - 1) * parseInt($scope.getReactively('perPage')),
            sort: $scope.getReactively('sort'),
            fields: {emails: 1, profile: 1}
         },'admin').then(function() {
                $scope.usersCount = $meteor.object(Counts ,'numberOfUsers', false);
                console.log('user counter:' + $scope.usersCount.count);
                $scope.users.forEach( function (user) {
                    //    user.onClicked = function () {
                    //        //$state.go('userProfile', {userId: user._id});
                    //    };
                    console.log(user._id);
                });
            },
            function(error)
            {
                console.log(error);
            }
        );
    });


    $scope.users =  $meteor.collection(function() {
        console.log('looking for role: ' + role);
        return Meteor.users.find({}, {
            //sort : $scope.getReactively('sort')
        });
    });

ただし、ログからは、クライアント側がすべてのユーザーを受け取ったように見えますが、サーバー側のログからは正しい結果が得られます。

ここで何が欠けていますか?

4

1 に答える 1

1

ここで考えるべきことがいくつかあります。

  1. ユーザーをリクエストすると、常に「あなた」が表示されます。したがって、ログインしているユーザーが管理者でない場合でも、コレクションに表示されます。

  2. $meteor.subscribeスコープが破棄されたときにサブスクリプションをクリアしていない代わりに使用しているため$scope.$meteorSubscribe、他のスコープからのクライアント側の他のサブスクリプションと混在している可能性があります。

于 2015-10-11T00:31:06.027 に答える