我的问题很简单,但遗憾的是我没有找到任何地方。
我有一组地图,例如我正在使用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()没有任何东西..
什么是正确的方法?
答案 0 :(得分:3)
第一种方法看起来是正确的,但您需要以另一种方式加载用户,因为Meteor.user()
在发布函数中不可用。只是做:
var user = Meteor.users.findOne(this.userId);