如何向其他用户显示集合内容?

时间:2016-05-10 14:26:41

标签: javascript meteor

起初我是流星的初学者。我正在为学校创建一个应用程序。用户可以向集合添加内容。我的问题是,目前只有作者才能看到任务。我该如何解决?

编辑:我的js代码



    if (Meteor.isClient) 
    {
    Template.Collection.onCreated(function() {
        var self = this;
        self.autorun(function() {
            self.subscribe('tasks');
        });
    });

    Template.Collection.helpers({
        tasks: ()=> {
            return tasks.find({inCollection: true});
        }
    });

    Template.Tasks.onCreated(function() {
        var self = this;
        self.autorun(function() {
            self.subscribe('tasks');
        });
    });

    Template.tasks.helpers({
        tasks: ()=> {
            return tasks.find({});    
        }
    });

    Template.Tasks.events({
        'click .new-task': () => {
            Session.set('newTask', true);
        }
    });

    Template.TaskSingle.onCreated(function() {
        var self = this;
        self.autorun(function() {
            var id = FlowRouter.getParam('id');
            self.subscribe('singleTask', id);
        });
    });

    Template.TaskSingle.helpers({
        task: ()=> {
            var id = FlowRouter.getParam('id');
            return Tasks.findOne({_id: id});
        }
    });

    Template.NewTask.events({
        'click .fa-close' : function() {
            Session.set('newTask', false);
        }
    });

    Template.Task.onCreated(function(){
       this.editMode = new ReactiveVar(false);
       // this.editMode = new ReactiveVar();
       //this.editMode.set(false);
    });

    Template.Task.helpers({
        updateTaskId: function() {
            return this._id;
        },
        editMode: function() {
            return Template.instance().editMode.get();
        }
    });

    Template.Task.events({
        'click .toggle-menu': function() {
            Meteor.call('toggleMenuItem', this._id, this.inCollection);
        },
        'click .fa-trash' : function() {
            Meteor.call('deleteTask', this._id);
        },
        'click .fa-pencil' : function(event, template) {
           template.editMode.set(!template.editMode.get());
        }
    });


    }



    if (Meteor.isServer) {
        Meteor.startup(function () {
            //code to run on server at startup      
    });


    Meteor.publish('tasks', function(){
        return tasks.find({author: this.userId});
    });


    Meteor.publish('singleTask', function(id){
        check(id, String);
        return Tasks.find({_id: id});
    });

    // Configure Accounts to require username instead of email
    Accounts.ui.config({
        passwordSignupFields: "USERNAME_ONLY"
    });

    }

2 个答案:

答案 0 :(得分:0)

如果您删除了autopublish文件包,那么您需要为要发送给客户的文档创建出版物和订阅。

在您编写的服务器上:Meteor.publish('items', function () { return Items.find(); }。 在客户端,您将订阅Meteor.subscribe('items');

答案 1 :(得分:0)

您只清楚地为作者发布任务:

Meteor.publish('tasks', function(){
    return Tasks.find({author: this.userId});
});

如果您希望每个人都能看到它,那么它应该是

Meteor.publish('tasks', function(){
    return Tasks.find();
});