我正在尝试meteor只发布用户有权访问的文档。 访问系统位于文档数据库之外,但是如果用户具有访问权限,则函数调用(如hasAccess(customuserID,_id))将返回true。
问题是发布会返回一个游标,所以我做不了类似的事情:
'App\Models\User'
当然这个函数返回一个过滤文档数组而不是游标,所以问题是如何在发布结果之前过滤查询结果(不使用数据库过滤器)或如何将文档数组转换为可发布的光标?
由于
答案 0 :(得分:3)
您可以尝试这样的事情:
Meteor.publish('theInvoices', function () {
var invoices = Invoices.find().fetch().filter(function (doc) {
return hasAccess(customerUserID, doc._id);
});
var invoiceIds = _.pluck(invoices, '_id');
return Invoices.find({_id: {$in: invoiceIds}});
});
只找到所有允许的发票ID,并根据该列表发布新的游标。请记住这个isn't reactive。
另请注意,应在某处定义customerUserID
。