Обычно хорошей идеей является отсоединение ключей от данных, которые они содержат.Данные могут меняться, имена пользователей, пароли, местоположения и т. Д. Такие данные очень динамичны.Однако ссылки и ссылки более статичны.
Предположим, у вас есть список подписчиков, и вы используете их имя пользователя в качестве ключа.Если пользователь изменяет свое имя пользователя, не только весь его узел будет удален и перезаписан, но и любое другое вхождение этого ключа в базу данных также будет изменено.Если ключ статический, то единственный элемент, который изменяется в дочернем имени пользователя.
Итак, чтобы ответить на вопрос: вот один вариант
orders
firebase_generated_key_0
order_number: "1111"
ordered_by: "uid_0"
order_amount: "$99.95"
firebase_generated_key_1
order_number: "2222"
ordered_by: "uid_1"
order_amount: "$12>95"
С этой структурой у вас есть номер заказа, ссылка на пользователя, который его заказал, и общая сумма заказа.Если клиент меняет информацию о заказе, выполняется простое изменение order_amount, и заказ остается на месте.
Редактировать:
Комментарий / вопрос, задаваемый относительно условий гонки при записи данных с помощью Firebase,Существует ряд решений, но хорошей отправной точкой является использование транзакций Firebase для «блокировки» данных во избежание одновременных изменений.
См. Сохранение данных в виде транзакций для дальнейшего чтения.