2

ユーザーのリストがあります。すべてのユーザー データ、特に電子メールをクライアントに公開したくありません。使用できる公開方法が複数あります。

Meteor.publish('usersData', function() {
    return Users.find({}, {
        fields: {
            emails: 0
        }
    });
});

しかし、私や他のプログラマーがフィールドをフィルタリングするのを忘れて、コレクション全体を公開した場合はどうなるでしょうか。

Meteor.publish('users', function() {
    return Users.find();
});

それは問題だ。コレクション内のデータをフィルタリングするためのグローバル設定が必要です。現在の (0.6.6.3) Meteor でそれを行う方法はありますか?

4

2 に答える 2

0

collection.findユーザーを公開する必要がある場合に使用する通常の方法の代わりに使用する方法を作成できます。例は次のとおりです。

function findUsers(query) {
    return Meteor.users.find(query || {}, { fields: { emails: 0 } });
}

そして、プログラマーにfindUsersメソッドを使用するように思い出させることができます:

Meteor.publish('userData', function () {
    return findUsers({ points: { $gt: 5 } });
});
于 2013-11-09T17:12:36.160 に答える