Meteor:隐藏客户端的属性

时间:2012-12-17 23:21:26

标签: meteor

有没有办法从客户端更新中排除某些属性?

在控制台中检查集合时,不应该看到该属性

1 个答案:

答案 0 :(得分:20)

绝对。

  1. 删除默认启用的autopublish包:meteor remove autopublish

  2. 创建您的收藏:Rooms = new Meteor.Collection("rooms"); 无需条件isServer或isClient,因为这应该同时存在

  3. 在您的服务器端代码中,publish仅将您的收藏的一部分归零,将您不希望客户端拥有的字段清零:

    if (Meteor.isServer) {
        //you could also Rooms.find({ subsetId: 'some_id' }) a subset of Rooms
        Meteor.publish("rooms", function () {
            return Rooms.find({}, {fields: {secretInfo: 0}});
        });
    }
    

    注意:上面设置{secretInfo: 0}并未将secretInfo集合中每一行的Rooms的所有实例设置为零。它从clientside集合中删除字段。将0视为关闭开关:)

  4. 将客户端订阅到已发布的集合:

    if (Meteor.isClient) {
        Deps.autorun(function() {
            Meteor.subscribe("rooms");
        });
    }
    
  5. 希望这有帮助!