# #python #flask #firebase-realtime-database #pyrebase
Вопрос:
Я создаю веб-приложение с помощью flask, а для использования бэкенда firebase int я использую pyrebase. Я создал учетную запись пользователя, отправил данные профиля в виде объекта json и сохранил их в базе данных в режиме реального времени. Структура, если данные такие;
Теперь я хочу обновить значения доходов и расходов. Я обновляю данные о доходах следующим образом;
income = request.form.get("income")
price = request.form.get("price")
data = {"income" : income, "price": price}
incomes.append(data)
a = db.child("users").update({"incomes": incomes})
Но значение дохода не обновляется в базе данных firebase. Вместо этого он добавляется вот так;
Как обновить значение. Я искал readme для pyrebase и следовал тому же методу обновления значения.
Комментарии:
1. Да, я попробовал ваше решение, и оно отлично сработало. Но я не мог сделать его универсальным для выборки каждого пользователя. Вы сказали
So in your case you need to know the -Mh2v8... key too and pass that into your update call:
, что API отвечает idToken, электронной почтой с токеном обновления и несколькими другими объектами, но я не нашел никакой информации об этом конкретном ключе, назначенном каждому пользователю. Я не знаю, как его достать.2. Вы спрашиваете, как найти узел в базе данных с данным электронным письмом? Это был бы новый, отдельный вопрос, но он начинался бы с github.com/thisbejim/Pyrebase#complex-queries
Ответ №1:
Чтобы записать значение узла в базу данных реального времени, вам необходимо знать точный путь к этому узлу. Поэтому в вашем случае вам тоже нужно знать -Mh2v8...
ключ и передать его в вызов обновления:
db.child("users").child("-Mh2v89LOLthJBSImbN-").update({"incomes": incomes})
Если вы изначально считываете данные из базы данных, то в этот момент проще всего запомнить ключ каждого элемента.
Если вы действительно не знаете ключ, но знаете какое-либо другое уникальное свойство пользователя, вы можете использовать запрос для поиска ключа пользователя на основе этого уникального значения.