【问题标题】:com.parse.ParseException: Clients aren't allowed to perform the find operation on the installation collectioncom.parse.ParseException:不允许客户端对安装集合执行查找操作
【发布时间】:2015-04-15 14:22:01
【问题描述】:

我是解析新手,我能够将数据存储到其数据库中,但是每当我尝试从数据库中检索对象 ID 等信息时,我通常会收到上述错误。我用来检索对象的查询 - id 对应于给定的 Friend-id。

ParseQuery<ParseObject> query = ParseQuery.getQuery("_Installation");
		query.whereEqualTo("FriendId", FrndTextString);
		
		query.findInBackground(new FindCallback<ParseObject>() {
			public void done(List<ParseObject> results, ParseException e) {
				if (e == null) {
					
					for (ParseObject x : results) {
						String Objectid = x.getString("objectId");
						
						objectidEditText.setText(Objectid);
					}
				} else {
					Toast.makeText(getApplicationContext(),
							"Error in retreving Data", Toast.LENGTH_LONG)
							.show();
				}
			}
		});

请帮助我解决这个问题,因为我搜索了很多,但没有找到任何好的解决方案。任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • _Installation 类似乎是一个内部类。您是否尝试过使用其他课程?

标签: android parse-platform


【解决方案1】:

_Installation 类是 Parse 的内部类。发生异常是因为您尝试访问受特定用户使用特定 ParseACL 保护的数据。

来自 Parse 的文档:

安装在注册推送通知的设备上的每个 Parse 应用程序都有一个关联的 Installation 对象。安装对象是您存储目标推送通知所需的所有数据的地方。例如,在棒球应用程序中,您可以存储用户感兴趣的球队以发送有关其表现的更新。跟踪推送相关的应用打开事件也需要保存 Installation 对象。

在 Android 中,安装对象可通过 ParseInstallation 类(ParseObject 的子类)获得。它使用相同的 API 来存储和检索数据。要从您的 Android 应用程序访问当前的安装对象,请使用 ParseInstallation.getCurrentInstallation() 方法。第一次保存 ParseInstallation 时,Parse 会将其添加到您的 Installation 类中,并且可用于定位推送通知。

尝试使用另一个类,例如“排名”。例如:

ParseQuery<ParseObject> query = ParseQuery.getQuery("Ranking");
query.whereEqualTo("FriendId", FrndTextString);

query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> results, ParseException e) {
        if (e == null) {
            
            for (ParseObject x : results) {
                String Objectid = x.getString("objectId");
                
                objectidEditText.setText(Objectid);
            }
        } else {
            Toast.makeText(getApplicationContext(),
                    "Error in retreving Data", Toast.LENGTH_LONG)
                    .show();
        }
    }
});

如果您想查找其他用户的公共信息,您必须注意为每个用户和类正确设置 ParseACL。至少,所有用户都必须“公开阅读”您想要的数据。

在 Parse 中保存任何数据之前,您必须设置环境 with this tutorial。之后,您必须创建 ParseUser 并使用它登录。 Parse 有一种自动创建用户的方法,只需调用:

ParseUser.enableAutomaticUser();
ParseUser.getCurrentUser().increment("RunCount");
ParseUser.getCurrentUser().saveInBackground();

要在 Parse 中保存任何数据,您可以使用:

ParseObject gameScore = new ParseObject("GameScore");
gameScore.put("score", 1337);
gameScore.put("playerName", "Sean Plott");
gameScore.put("cheatMode", false);
gameScore.saveInBackground();

如果不存在,Parse Server 将自动创建新类“GameScore”。如果不存在,则会创建所有列,例如“score”、“playerNAme”和“cheatMode”。

要使用 Parse,请read API Doc,它很有帮助。

【讨论】:

  • 嗨,谢谢你的回复,但是你能告诉我如何在我的新创建的类中输入数据。对我来说,一个提示就足够了
  • 这样我们可以在我们的新类中放置值吗:- ParseInstallation.create("sid").put("age", Integer.valueOf(ageTextString));
  • java.lang.IllegalArgumentException: Can only push to a query for Installations..我在发送推送通知时收到此错误..progrmattically
  • 你好 Paulo,这是点击这里的代码我收到上面提到的错误
【解决方案2】:

不能这样查询安装类。使用 ParseInstallation.getCurrentInstallation();而是。

例如,

ParseInstallation.getCurrentInstallation().getString("FriendId");

【讨论】:

    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2020-01-11
    相关资源
    最近更新 更多