Это немного поздно в игре, так как некоторые другие уже хорошо ответили, но я расскажу, как я могу реализовать его.
Это зависит от того, что Firebase REST API предлагает параметр shallow=true
.
Предположим, что у вас есть объект post
, и каждый из них может иметь номер comments
:
{
"posts": {
"$postKey": {
"comments": {
...
}
}
}
}
Вы, очевидно, не хотите получать все комментарии, просто количество комментариев.
Предполагая, что у вас есть ключ для сообщения, вы можете отправить запрос GET
на https://yourapp.firebaseio.com/posts/[the post key]/comments?shallow=true
.
Это вернет объект key- пары значений, где каждый ключ является ключом комментария, а его значение - true
:
{
"comment1key": true,
"comment2key": true,
...,
"comment9999key": true
}
Размер этого ответа намного меньше, чем запрос эквивалентных данных, и теперь вы можете рассчитать количество ключей в ответе, чтобы найти ваше значение (например, commentCount = Object.keys(result).length
).
Это может не полностью решить вашу проблему, поскольку вы все еще вычисляете количество возвращенных ключей, и вы не можете обязательно подпишитесь на значение по мере его изменения, но оно значительно уменьшит размер возвращаемых данных, не требуя каких-либо изменений в вашей схеме.