Android 自定义参数 在 findInBackground 中无法使用

现在使用的是Android 3.16.2版的sdk, 现在有这样的问题,
比如我通过 AVIMConversation.set("isExit", 1) 创建了一个自定义参数, 在leancloud的网页上也能找到对应的值.
然后使用 query.whereEqualTo("isExit", 1) 的时候,
因为是自定义参数的关系, "isExit"前面会被加上"attr", 这样就对应到了另一个参数上,
请问,有什么解决方法吗

你好,请打开日志,发下查询对应的整条 cURL。

Android 打开日志方法 AVOSCloud.setDebugLogEnabled(true);

下面是我的代码和日志

query.whereNotContainsIn("exits", exits);
        query.whereEqualTo("attr.type", 0);
        query.whereSizeEqual("m", 2);
        query.whereContainsIn("m", ids);

convMessage {
                                                                             limit: 20
                                                                             skip: 0
                                                                             where {
                                                                               data: "{\"attr.exits\":{\"$nin\":[\"51293\"]},\"attr.type\":0,\"m\":{\"$in\":[\"51293\"],\"$size\":2}}"
                                                                             }
                                                                           }

我看了sdk里面的代码,有下面的处理语句

public AVIMConversationQuery whereNotContainsIn(String key, Collection<?> value) {
        this.conditions.whereNotContainedIn(this.getColumnKey(key), value);
        return this;
}

private String getColumnKey(String key) {
        return AVIMConversation.internalColumnList.contains(key)?key:(key.startsWith("attr.")?key:this.getAttributeKey(key));
 }

我传进去的exits不在AVIMConversation.internalColumnList内,于是被加上了"attr"

这里确实是有问题的。我们正在修复,预计下周五之前才会发布。

如果您实在着急,我可以私信您一个绕过的办法。但是在新版 SDK 发布后,又需要把代码改回来。所以不是很推荐您用这个临时方案。

您可以跟进下面这个 issue https://github.com/leancloud/knowhow/issues/18 来查看进度。