1

我的问题很简单,但不幸的是我在任何地方都没有找到。

例如,我有一组地图,我正在使用 Meteor.user().profile.mapsId 检查是否允许该用户查看该地图。

第一种方法:

服务器/server.js

Meteor.publish('map', function (mapOwner) {
  var user =  Meteor.user();
  var mapId = user.profile.mapId;
  return Map.find({mapOwner: mapId});
});

没有工作,因为发布不接受 Meteor.user();

第二种方法:

服务器/server.js

    Meteor.publish('map', function (mapOwner) {
          return Map.find({mapOwner: Meteor.call('mapsCall')});
        });

集合/maps.js

Map = new Meteor.SmartCollection('map');

Meteor.methods({
  mapsCall: function() {
  var user = Meteor.user();
  var startupId = user.profile.startupId;
  return startupId;
  }
});

当我调用 Map.find().fetch() 时什么都没有..

什么是正确的方法?

4

1 回答 1

3

第一种方法看起来是正确的,但是您需要以另一种方式加载用户,因为Meteor.user()在发布功能中不可用。做就是了:

var user = Meteor.users.findOne(this.userId);
于 2013-10-02T19:53:46.677 回答