我真的是新的firebase实时数据库,我没有时间学习它彻底之前,开始一个学校的项目。查询不能正常工作。
我有一个如下所示的数据库:
{
"cat": {
"-NKKUp_AiD98WHUvnfR0": {
"birthYear": "2001",
"imageUrl": "***",
"name": "Tom"
}
},
"user": {
"uFkR1Z1UoVTVUmbpDmgU7BXGT852": {
"admin": true,
"email": "ziaddddd@gmail.com",
"fullName": "ziad212",
"phoneNo": "011111111"
}
}
}
我想创建一个新节点'request',并将其子节点设置为当前的uId、cat名称和userName。但是我在用户名方面遇到了问题。下面是我的代码:
static requestCat(catName) async {
final uId = AuthenticationRepository.auth.currentUser!.uid;
Query query = DbHelper.database.ref('user').orderByValue().equalTo(uId);
final snapshot = await query.get();
final user = snapshot.value as Map;
user['key'] = snapshot.key;
var userName = user['fullName'];
DatabaseReference ref = DbHelper.database.ref('request');
ref.push().set(
{'catName': catName,
'userName': userName,
'userId': uId
}
);
}
}
当我调用这个函数时,它给出了以下错误:
Error: [firebase_database/index-not-defined] Index not defined, add ".indexOn": ".value", for path "/user", to the rules
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 266:49 throw_
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 49:5
_startMicrotaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15 <fn>
我做错了什么?
1条答案
按热度按时间fdx2calv1#
如错误所示,您需要对数据库执行add an index才能允许此查询。您可以在数据库的安全规则中执行此操作,通常在Firebase console中。对于此特定查询,规则为: