Добро пожаловать в переполнение стека!
Функционально ваш подход к тому, чтобы клиенты позаботились об управлении сообщениями, вероятно, сработал бы, но, как вы подозреваете, это не лучшее решение. С одной стороны, это означает, что клиенты должны быть авторизованы для удаления / изменения всех сообщений, независимо от того, какой пользователь отправил их (в конце концов, самые старые сообщения могли быть опубликованы любым пользователем, в конце концов). Даже не зная вашего точного варианта использования, я сомневаюсь, что вы хотите позволить одному пользователю удалять сообщения, отправленные кем-то другим.
Вместо этого, функциональность, которую вы описываете, звучит так, как будто она должна быть обязанностью сервера, а не клиента.
Для этого вы можете использовать Облачные функции Firebase (в частности, через База данных реального времени запускает , скорее всего), что должно позволить вам эффективно выполнять тот же код "onChildAdded", который вы описано, но на сервере.
Таким образом, вам нужно только авторизовать сервер для изменения всех сообщений, и клиент не должен быть вовлечен.
(Примечание. Хотя с вашей схемы это выглядит не так, но если вы действительно хотели сохранить только 200 самых последних сообщений на пользователя , авторизация была бы менее важной. Тем не менее, Вероятно, было бы хорошей идеей возложить на себя ответственность такого рода на стороне сервера, хотя бы потому, что это позволяет вам изменять логику в любое время без необходимости развертывания новой версии для ваших клиентов. В общем, этот вид «Обслуживание данных» просто лучше подходит как обязанность сервера.)