我的Meteor发布有一些有线问题,当我有findOne时它可以工作,但发现它没有,并且与findOne我得到一个游标错误。
这是我的代码
Meteor.publish('organizations', function() {
var user = Meteor.users.findOne(this.userId);
if(!user) return '';
var debugTest = Organizations.findOne(user.organizationId);
console.log(debugTest._id);
//return Organizations.findOne({_id: user.organizationId});
});
为此,我得到了未定义的
如果我执行以下操作
Meteor.publish('organizations', function() {
var user = Meteor.users.findOne(this.userId);
if(!user) return '';
console.log(user.organizationId);
var debugTest = Organizations.findOne(user.organizationId);
console.log(debugTest._id);
//return Organizations.findOne({_id: user.organizationId});
});
我回复了两个ID但是返回时我收到以下错误
是的,我 NvoF9MimZ6tJ95c3m NvoF9MimZ6tJ95c3m错误 来自子KLnQphHTXmQcjEi2D的异常错误:发布函数只能返回Cursor或Cursors数组
答案 0 :(得分:12)
findOne
不会返回Mongo游标。它返回一个Mongo文档。如果您希望这样做,请尝试更改为使用return Organizations.find({_id: user.organizationId});
。这将返回单个文档光标,这是发布调用所期望的。
有关详细信息,请查看docs。
答案 1 :(得分:0)
所以问题是由于我的模板pub / sub工作正常但在我的模板助手中我有以下导致问题。
hasOrganization: function() {
var user = Meteor.user();
var organizationsCount = Organizations.find({$or:[{userId: user._id},{**userId**: user.organizationId}]}).count();
console.log(organizationsCount);
if (organizationsCount >= 1) {
return true
} else {
return false
}
这是固定版本
hasOrganization: function() {
var organizationsCount = Organizations.find().count();
if (organizationsCount >= 1) {
return true
} else {
return false
}
}