Не удается обновить данные в базе данных firebase в режиме реального времени

# #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})
 

Если вы изначально считываете данные из базы данных, то в этот момент проще всего запомнить ключ каждого элемента.

Если вы действительно не знаете ключ, но знаете какое-либо другое уникальное свойство пользователя, вы можете использовать запрос для поиска ключа пользователя на основе этого уникального значения.