这个问题在这里已有答案:
如何在添加数据插入时使用唯一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 回答
将以下内容添加到您的firebase规则是否可以解决问题?