现在使用的是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"
exits
AVIMConversation.internalColumnList
这里确实是有问题的。我们正在修复,预计下周五之前才会发布。
如果您实在着急,我可以私信您一个绕过的办法。但是在新版 SDK 发布后,又需要把代码改回来。所以不是很推荐您用这个临时方案。
您可以跟进下面这个 issue https://github.com/leancloud/knowhow/issues/18 来查看进度。
等你们解决吧