【问题标题】:Meteor observe on users cursor流星观察用户光标
【发布时间】:2016-03-09 02:08:55
【问题描述】:

我目前有这样的用户发布/订阅方法:

Meteor.subscribe("userData");

Meteor.publish('userData', function () {
     return Meteor.users.find({}, {fields: {profile: 1}});
});

这很好用。但是如果我想在观察回调的配置文件中添加几个字段,我会遇到问题,如下所示:

Meteor.publish('userData', function () {
    var self = this;
    var users = Meteor.users.find({}, {fields: {profile: 1}});

    var subHandle = users.observe({
        added: function (fields) {
            fields.profile.postCount = Post.find({'owner': fields._id}).count();
            self.added("userData", fields._id, fields);
        },
        changed: function(newObj, oldObj){
            fields.profile.postCount = Post.find({'owner': fields._id}).count();
            self.changed("userData", newObj._id, newObj);
        },
        removed: function(obj) {
            self.removed("userData", obj._id);
        }
    });

    self.ready();

    self.onStop(function () {
        subHandle.stop();
    });

});

问题是,当我尝试在客户端查找用户时,如果我已登录(控制台内的Meteor.users.find().fetch()),我只能找到一个用户,我自己。我看到发布已经完成(控制台内的网络 WS 部分),所以我知道有多个用户被推送到客户端。

所以我显然做错了什么,有人能指出我正确的方向吗?

【问题讨论】:

  • 尝试在客户端签入userData 集合。你必须先创建它。
  • 观察函数异步运行,因此您在回调有机会运行之前调用了 ready()。用户文档最终仍应显示在客户端上,就在就绪消息之后。

标签: meteor meteor-accounts


【解决方案1】:

这里可能存在不止一个问题,但引起我注意的是您在 added/changed/removed 回调中使用出版物的名称而不是集合名称 ('users' )。尝试如下修改您的observe

var subHandle = users.observe({
    added: function (fields) {
        fields.profile.postCount = Post.find({'owner': fields._id}).count();
        self.added('users', fields._id, fields);
    },
    changed: function(newObj, oldObj){
        fields.profile.postCount = Post.find({'owner': fields._id}).count();
        self.changed('users', newObj._id, newObj);
    },
    removed: function(obj) {
        self.removed('users', obj._id);
    }
});

如果这不起作用,请告诉我,我会进一步检查。

【讨论】:

    猜你喜欢
    • 2017-08-20
    • 2017-11-05
    • 1970-01-01
    • 2023-03-15
    • 2015-06-24
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多