首页 文章

firebase数据库检查数据(如果在使用唯一ID之前存在)[duplicate]

提问于
浏览
0

这个问题在这里已有答案:

如何在添加数据插入时使用唯一ID(如此处的屏幕截图)搜索/检查firebase实时数据库中的数据:myfirebase data

(截图看起来像吼叫)

用户

--LMXmJKkb8khQa08zRtD

-----名字:“约翰”

-----状态:1

--LMXmRscUZPvp00oVv5s

-----名字:“彼得”

-----状态:1

注意:该应用程序不知道或没有唯一ID的副本,因此我无法直接访问它 .

我想在添加/插入数据库之前检查“名称”是否唯一 .

这是我到目前为止所做的代码(注意这是在C中,你可以用任何语言发布你的答案)

firebase::database::DatabaseReference userRef = database->GetReference();   
SampleValueListener* listner = new SampleValueListener();
userRef.Child("users").OrderByChild("name").EqualTo("John").AddValueListener(listner);

class SampleValueListener : public firebase::database::ValueListener {
 public:
     void OnValueChanged(
          const firebase::database::DataSnapshot& snapshot) override {
         if (snapshot.exists()) {
            printf("\nData exist");
         }
      }

    void OnCancelled(const firebase::database::Error& error_code,
    const char* error_message) override {
    printf("ERROR: SampleValueListener canceled: %d: %s", error_code,
        error_message);
   }
};

到目前为止我收到一个错误:

错误:SampleValueListener取消:10:索引未定义,为路径“/ users”添加“.indexOn”:“name”到规则

所以我需要以下方面的帮助:

  • 那么当我无法直接访问如何访问名称时如何设置索引,因为它在uniqueid标识符下?

  • 我是以正确的方式做到的吗? (从上面的代码中),如何在添加值之前检查是否存在“名称”?

1 回答

  • 1

    将以下内容添加到您的firebase规则是否可以解决问题?

    "rules": {
        "users": {
            ".indexOn": "name"
         }
     }
    

相关问题