我正在尝试使用google的rest API对google的实时数据库进行查询。"waiters“路径的数据如下所示:
{
"-Kb2dYPV0yUXpD_1moc9": {
"id": "Ky7gTz0BFyRudih0DhSAe3lwci13",
"role": "normal"
},
"-Kb2etFm1xHd8sSsESeK": {
"id": "VRBNr5OnMQaDoLpkKppapyDW8JZ2",
"role": "admin"
},
}在客户端,我知道id,我想要得到的是角色(即“管理员”或其他什么),但我不知道自动生成的位置id ("-Kb2etFm1xHd8sSsESeK")。有人知道如何继续吗?
我试过了:
static Future<RoleType> fetchRole(String userId, String token) async {
try {
var url =
"https://xxx.firebaseio.com/waiters.json?orderBy=\"id\"&equalTo=\"" +
"$userId\"" +
"?auth=" +
token;
final response = await http.get(url);
final extractedData = json.decode(response.body);
if (extractedData == null) return null;
return RoleType(extractedData['role']);
} catch (error) {
print("[fetchRole]:: " + error.toString());
throw error;
}}
不带令牌的URL提供:
https://xxx.firebaseio.com/waiters.json?
orderBy="id"&equalTo="VRBNr5OnMQaDoLpkKppapyDW8JZ2"?auth=token但我得到了这个错误:{错误:约束索引字段必须是JSON原语}
当我按如下方式更新规则时,我仍然收到此错误:
{
"rules": {
".read": "auth != null", // 2020-11-9
".write": "auth != null", // 2020-11-9
"waiters": {
".indexOn": ["id"]
}
}
}提前感谢您的帮助!
发布于 2020-12-08 17:36:59
出于某种原因,它现在起作用了。我不知道为什么。CS的奥秘。
发布于 2021-01-20 17:58:28
当我用angular玩离子游戏时,Hi也得到了同样的错误。
原来我的一个字符不是英文字符,我输入的是"“而不是”“。
希望这对路过的人有所帮助;)
https://stackoverflow.com/questions/65189083
复制相似问题