重叠订阅不会发布所有字段

时间:2016-02-16 13:13:02

标签: meteor

当我有两个限制要发布的字段的订阅时,它不会在两个

之间建立联合

这应该只发布头像。

Meteor.publish('userStatisticsByYear', function(year) {
    check(year, Number);
    this.unblock();

    var userStats = UserStatistics.find({year: year},{sort: {count: -1}, limit: 5});
    var userIds = userStats.map(function(u) {
        return u.userId;
    });

    return [
        Meteor.users.find({_id: {$in: userIds}},{fields: {username: 1, "profile.avatar": 1}}),
        ProfileImages.find({owner: {$in: userIds}}),
        userStats
    ];
});

此订阅会发布该配置文件的更多详细信息。在某些路线下哪个好。

Meteor.publish('getUserProfile', function(userId) {
    this.unblock();

    if (!this.userId) {
        this.ready();
        return;
    }

    return [
        Meteor.users.find({_id: userId}, {fields: {profile: 1}}),
        ProfileImages.find({owner: userId})
    ]
});

问题在于,如果我同时订阅“profile.avatar”正在发布。但不是“getUserProfile”

中的额外字段

控制台的输出:

Meteor.subscribe('userStatisticsByYear')
Object {subscriptionId: "aQFv4HkGDKx54gJLq"}

Meteor.users.findOne("KABEf7SzNCmQapXND").profile
Object {avatar: "NQokwm9bHgfrMtKLY"}

Meteor.subscribe('getUserProfile','KABEf7SzNCmQapXND')
Object {subscriptionId: "hemH2NF88vwd3AkHv"}

Meteor.users.findOne("KABEf7SzNCmQapXND").profile
Object {avatar: "NQokwm9bHgfrMtKLY"}

1 个答案:

答案 0 :(得分:1)

我之前见过这个。

如果您使用Meteor.users.find({"_id":"KABEf7SzNCmQapXND"}).profile代替findOne,我相信它应该有用。