如何在添加时使用唯一的ID(例如此处的屏幕截图)插入数据时,在Firebase实时数据库中搜索/检查数据: myfirebase data
(屏幕快照如下)
+个用户
-LMXmJKkb8khQa08zRtD
----- name:“ John”
-----状态: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”:“名称”添加到规则中
所以我需要以下帮助:
那么当我无法直接访问如何在唯一标识符下访问名称时,如何设置索引?
我做对了吗? (根据上面的代码),如何在添加值之前检查“名称”是否存在?
答案 0 :(得分:1)
将以下内容添加到您的Firebase规则中是否可以解决该问题?
"rules": {
"users": {
".indexOn": "name"
}
}