2015-11-03 74 views
0

我有一个名为“Contacts”的集合,其中每个文档都有authorId。我希望用户在服务器端搜索集合(出于性能目的,因此我使用的是MongoDB引擎),但只返回与用户具有相同authorId的联系人。看起来好像权限只允许或拒绝访问整个集合。有没有办法实现服务器端的过滤?meteor easy-search服务器端过滤

谢谢

+0

你真的想查询一个字符串或某个值的“联系人”,然后用'userId'过滤,或者你只是试图发布'authorId'是'Meteor.userId()'的所有联系人吗? –

+0

您是否发布了所有需要的联系人? – corvid

+0

对不起,我不清楚。我在这里谈论的是简单搜索许可:http://matteodem.github.io/meteor-easy-search/docs/core/ 我不是在谈论流星许可。 – WayneUong

回答

0

将Mongo选择器添加到查询选项。

例如:

EasySearch.createSearchIndex('contactsIndex', { 
    'collection': Contacts, 
    }, 
    'query': function(searchString) { 
    var query = EasySearch.getSearcher(this.use).defaultQuery(this, searchString); 
    query.authorId = {$in: Meteor.userId} 
    return query; 
    } 
}); 
+0

我有一个简单搜索的示例应用程序。 https://github.com/DylanKojiCheslin/adamant-octo-kidney –

+0

我认为这种方法是不安全的,因为客户端可以修改Meteor.userId是任何东西,并有权访问其他作者的联系人。另外,我使用MongoDB引擎,以便在服务器端对整个集合进行搜索。 – WayneUong

+0

Meteor.users.deny({update:function(){ return true; } }); –

0

我想我找到了正确的方法与权限选项来做到这一点。

http://matteodem.github.io/meteor-easy-search/docs/core/

基本上,我会通过AUTHORID在选择器作为一个过滤器,并且所述AUTHORID相同的当前用户id许可验证。

我还没有验证权限是否实际在服务器中执行。但是在客户端进行权限检查是非常错误的。