0

我正在为我的 android 应用程序使用 Parse 后端。我需要在数据库中查询具有特定字符串值的字段的记录。以下是解析代码

strObjectId 是使用 Parse ObjectId 初始化的字符串,如下所示

        String strObjectId = MyParseObject.getObjectId();

解析代码

        ParseQuery<ParseObject> query = ParseQuery.getQuery("MyDataTable");
        query.whereEqualTo("code", Code);
        query.getFirstInBackground(new GetCallback<ParseObject>()
        {
          public void done(ParseObject object, ParseException e)
          {
            if (object == null) 
            {
                return;
            } 
            else 
            {
                ShowToast("Record found!");
            }
          }
        });

问题是在运行上面的查询之前,当“代码”被硬编码如下时,它工作得很好

        String Code = "krErZgz9Is";

但是当 Code 被分配 Parse ObjectId 时它不起作用,如下所示

        String Code = strObjectId;

显然,数据表确实有一条带有“代码”字段的记录,其值为“krErZgz9Is”

您的帮助将不胜感激

谢谢

4

2 回答 2

0

您是否尝试打印出 strObjectId?如果您的对象尚未保存在 Parse 中,或者该对象未从 Parse 加载。它不会有对象 ID。

另外,您是否尝试过直接检查与 objectId 的相等性?

query.whereEqualTo("code", MyParseObject.getObjectId());
于 2014-10-31T18:36:21.713 回答
0

我有这个为我工作

我创建了一个 EditText 并包含我想在查询中找到匹配项的文本。如果您真的不想显示它,请尝试将其隐藏在布局中。

EditText editText = (EditText) findViewById(R.id.editText);

editText.setText(strObjectId);


ParseQuery<ParseObject> query = ParseQuery.getQuery("MyDataTable");
query.whereEqualTo("code", editText.getText().toString());
query.getFirstInBackground(new GetCallback<ParseObject>()
{
    public void done(ParseObject object, ParseException e)
    {
        if (object == null) 
        {
            return;
        }
        else 
        {
            ShowToast("Record found!");
        }
    }
});

我不明白为什么删除 getText() 函数不起作用,所以你最好保持这种方式。

于 2015-12-14T13:22:23.030 回答