解析用户查询仅检索当前用户

时间:2015-10-16 19:27:11

标签: javascript parse-platform

我试图运行一个查询,从User表中检索一组特定的用户,并使用Parse JS SDK将它们呈现给给定的登录用户。 起初我运行的查询如下:

(new Parse.Query(Parse.Object.extends("_User"))).containedIn("objectId", [/* list of user ids */]).find(/* success & error blocks */);

然后我学到了更正确的方法:

(new Parse.Query(Parse.User)).containedIn("objectId", [/* list of user ids */]).find(/* success & error blocks */);

但即便如此,我还是会找回一个空列表。我仔细检查了数据库,并确保我传递的ID在那里,他们是。只是为了它的地狱,我试过了:

(new Parse.Query(Parse.User)).find(/* success & error blocks */);

我找回了当前用户对应的用户对象。所以我的用户查询似乎只能访问当前用户。我还注意到,当我尝试从Parse API控制台运行等效查询时,我得到了相同的结果!这是某种全球性的设置,还是我做错了什么?谢谢!

3 个答案:

答案 0 :(得分:2)

我认为由于Parse中的用户安全设置,您必须使用CloudCode。尝试将其转换为云代码功能并包含

Parse.Cloud.useMasterKey()

在云代码功能之前。这是一项安全功能' Parse以确保人们无法编辑和访问其他用户配置文件和信息。

请参阅解析安全网站:

https://parse.com/docs/js/guide#security-object-level-access-control

以及有关实现useMasterKey()及其持久性的使用和注意事项的更多信息。

https://parse.com/docs/js/guide#security-implementing-business-logic-in-cloud-code

答案 1 :(得分:1)

为了节省线路,我建议不要将所有这些呼叫压缩到一行。它牺牲了可读性。虽然,技术上没有错,但是文档甚至说调用会返回一个查询,这样你就可以对每个调用进行链接调用。

但是,我认为你的电话没有任何问题。你是如何访问检索到的对象的?你传入containsIn的objectIds列表是什么?我想我们需要更多的代码。

编辑 - 我会说我80%肯定,没有更多信息,这是一个ACL / CLP问题。转到仪表板,点击_User类,按安全性,然后查看读/写设置。

答案 2 :(得分:0)

看起来像是CLP问题。也许禁用了您的User类的查找权限。转到您的用户类,点击安全性,切换到提前,然后检查是否勾选了查找权限。