LeanCloud查询不到结果,代码应该怎么写?

要在数据库中先查询是否已有手机号,如果没有的话,才可以注册

不太确定这里的「数据库」具体指什么。

  • 如果是指用户数据,那 AVUser 的手机号(mobilePhoneNumber)内置唯一索引保证其唯一性,直接调用注册接口就行,如果手机号已存在,云端会报错,客户端收到报错后给用户显示一个提示(「手机号已存在,请直接登录」之类)就行。详见文档
  • 如果是指黑名单(位于黑名单内的手机号不能注册账号),那可以用云引擎的 beforeSave hook 把黑名单中的用户拦下来。

感谢大神指导。
我再具体化一下我的需求。我自己建了一个数据表,不是内置的_User。就以User为例吧,里面有name和phone两个字段,我需要写代码判断这个User表里是不是有要注册的phone号码,如果没有,才允许注册,也就是再写入到user表中一条数据。但是我想了很久,查了好多,都没有查找在LeanCloud中,如果用代码去判断,如果查询不到phone号码的话,应该怎么判断?一般数据库只要判断查询结果是不是空就行了,可LeanCloud中不知道如何判断结果是否为空。
这可能是个很简单的问题,但我就是不知道怎么办。。。

一般数据库只要判断查询结果是不是空就行了,可LeanCloud中不知道如何判断结果是否为空。

如果查不到结果,结果会是一个空数组(基于 SDK 查询)或是空对象(直接调用 REST API 查询)。以使用 JavaScript SDK 为例:

studentQuery.find().then((students) => {
  // 如果查不到结果,students 会是一个空数组 
});

或者用 count 也可以(结果是否为零)。

以上是关于查询结果判断的说明。回到最初的需求,也可以在自建的数据表(控制台 > 存储 > 结构化数据 > Class 名 > 性能索引)那里给 phone 字段建个唯一索引。

AVQuery query = new AVQuery<>("Student");
query.whereEqualTo("lastName", "Smith");
query.findInBackground().subscribe(new Observer>() {
public void onSubscribe(Disposable disposable) {}
public void onNext(List students) {
// students 是包含满足条件的 Student 对象的数组
}
public void onError(Throwable throwable) {}
public void onComplete() {}
});
这是Android Studio中基本查询的代码,不知道是不是我测试的方法有误,之邀查询不到,是不触发其中的onNext方法的,也就无法用判断是students是不是空数组来判断查询结果是否为空。。。

感谢大神指点
不知道为什么前些天总是试着不行
结果今天再试试去判断Students数组是否为空,就行了。。。
哎,不知道哪里的问题。
但是这个简单的问题,总算结果了,再次感谢!