Meteor:隐藏客户端的属性

Xos*_*fox 11 meteor

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

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

Tim*_*Dog 20

绝对.

  1. 删除autopublish默认打开的包:meteor remove autopublish

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

  3. 在服务器端代码中,通过将您不希望客户端拥有的字段清零来仅发布集合的子集:

    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}});
        });
    }
    
    Run Code Online (Sandbox Code Playgroud)

    注意:{secretInfo: 0}上面的设置不会将集合secretInfo中每一行的所有实例都设置Rooms为零.它从clientside集合中完全删除了该字段.想想0作为关闭开关:)

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

    if (Meteor.isClient) {
        Deps.autorun(function() {
            Meteor.subscribe("rooms");
        });
    }
    
    Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!