Xcode .indexOn Firebase iOS
这里是数据结构布局。我有多个组,每个组下有多个付款Xcode .indexOn Firebase iOS,xcode,firebase,firebase-realtime-database,Xcode,Firebase,Firebase Realtime Database,这里是数据结构布局。我有多个组,每个组下有多个付款 { "RE_PAYMENTS" : { "AF04BDB4-6AF4-43F1-A084-D215AD0C992D" : { "B73FBFB1-2615-4F42-A7C6-3CA4B2B4BCDF" : { "PAYMENT_DETAIL" : { "paymentAmount" : 20, "paymentCurrency" : "USD", "paymentDate" : "14
{
"RE_PAYMENTS" : {
"AF04BDB4-6AF4-43F1-A084-D215AD0C992D" : {
"B73FBFB1-2615-4F42-A7C6-3CA4B2B4BCDF" : {
"PAYMENT_DETAIL" : {
"paymentAmount" : 20,
"paymentCurrency" : "USD",
"paymentDate" : "1461525157.150915"
}
},
"B8B0FDF3-4458-4AE2-B1A0-9DCD8ACFF422" : {
"PAYMENT_DETAIL" : {
"paymentAmount" : 40,
"paymentCurrency" : "USD",
"paymentDate" : "1461525392.178588"
}
}
}
}
}
从上面的结构来看,“AF04B……”是groupId,下面将有多个付款组
以下是我如何制定规则的
我仍然不断收到Xcode警告
[Firebase] Using an unspecified index. Consider adding ".indexOn": "PAYMENT_DETAIL/paymentDate" at /RE_PAYMENTS/AF04BDB4-6AF4-43F1-A084-D215AD0C992D to your security rules for better performance
我已经按照文档进行了操作,我正在努力使结构尽可能平整。关于解决indexOn问题有什么建议吗?我无法使用索引规则硬编码groupId或paymentId
以下是触发此警告的代码(eventType为FEventTypeChildAdded或FEventTypeChildChanged或FEventTypeChildRemoved)
并且查询被创建为
// I have just pasted the value here but the path is created using 'childByAppendingPath'
Firebase *groupRef = @"https://xxxxxxxx.firebaseio.com/RE_PAYMENTS/AF04BDB4-6AF4-43F1-A084-D215AD0C992D";
FQuery* query = [[[groupRef queryOrderedByChild:@"PAYMENT_DETAIL/paymentDate"] queryStartingAtValue:startDateQueryString] queryEndingAtValue:endDateQueryString];
这是用于查询的Xcode控制台
我所要做的就是在一组日期内查询组下的付款列表。是什么代码触发了错误。此外:您已经在问题和其他文本中包含了JSON树的图片。请用实际文本替换。您可以通过单击Firebase数据库中的导出按钮轻松获取JSON。拥有as文本使其可搜索,使我们能够轻松地使用它来测试您的实际数据,并在我们的答案中使用它,总的来说,这是一件好事。@FrankvanPuffelen。。。我已经添加了您要求的详细信息。谢谢你的帮助。我正在从parse迁移我的应用程序,我很想让它正常工作。是什么代码触发了错误。此外:您已经在问题和其他文本中包含了JSON树的图片。请用实际文本替换。您可以通过单击Firebase数据库中的导出按钮轻松获取JSON。拥有as文本使其可搜索,使我们能够轻松地使用它来测试您的实际数据,并在我们的答案中使用它,总的来说,这是一件好事。@FrankvanPuffelen。。。我已经添加了您要求的详细信息。谢谢你的帮助。我正在从parse迁移我的应用程序,我很想让它正常工作。
// I have just pasted the value here but the path is created using 'childByAppendingPath'
Firebase *groupRef = @"https://xxxxxxxx.firebaseio.com/RE_PAYMENTS/AF04BDB4-6AF4-43F1-A084-D215AD0C992D";
FQuery* query = [[[groupRef queryOrderedByChild:@"PAYMENT_DETAIL/paymentDate"] queryStartingAtValue:startDateQueryString] queryEndingAtValue:endDateQueryString];