如何在查询后过滤流星光标,然后发布结果

时间:2015-10-16 21:19:28

标签: mongodb meteor

我正在尝试meteor只发布用户有权访问的文档。 访问系统位于文档数据库之外,但是如果用户具有访问权限,则函数调用(如hasAccess(customuserID,_id))将返回true。

问题是发布会返回一个游标,所以我做不了类似的事情:

'App\Models\User'

当然这个函数返回一个过滤文档数组而不是游标,所以问题是如何在发布结果之前过滤查询结果(不使用数据库过滤器)或如何将文档数组转换为可发布的光标?

由于

1 个答案:

答案 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