Пост Ajax не увеличивает значения индекса в БД Firebase - PullRequest
0 голосов
/ 04 мая 2018

Я использую сообщение ajax для добавления новой информации массива к уже существующему объекту json, который у меня есть в Firebase, запись работает нормально, но она не увеличивает значение индекса, она просто использует случайный набор символов из того, что я могу видеть.

Почему это происходит, и как я могу изменить его, следуя предыдущему значению индекса?

Мой почтовый индекс ...

$.ajax({
  type: 'POST',
  url: "blahblahblah.json",
  data: JSON.stringify({
      FIELD2: $('#title').val(),
      FIELD3: $('#author').val(),
  }),
  error: function(e) {
    console.log('%c Epic Fail', 'color: #fff; font-weight: bold;background:red;padding:20px;');
  },
  success: function(data){   // A function to be called if request succeeds
    console.log('%c Hazaaaa', 'color: #fff; font-weight: bold;background:lime;padding:20px;');
  },
  dataType: "json",
  contentType: "application/json"
});

А так выглядит мой json после обновления новой информации.

84:{FIELD1: "6656640", FIELD10: "The Folio Society", FIELD11: "Hardcover", FIELD12: "304", FIELD13: "2005", …}
85:{FIELD1: "168668", FIELD10: "Simon & Schuster ", FIELD11: "Paperback", FIELD12: "453", FIELD13: "2004", …}
86:{FIELD1: "100915", FIELD10: "HarperCollins Publishers", FIELD11: "Paperback", FIELD12: "206", FIELD13: "2005", …}
-LBaSxkTucRyHqfqEdDI:{FIELD2: "TEST TITLE", FIELD3: "TEST AUTHOR"}
-LBaXDRfe3tjZEBoJwHy:{FIELD2: "dave", FIELD3: "smith"}

1 Ответ

0 голосов
/ 04 мая 2018

База данных Firebase рекомендует не использовать последовательные числа для индексации. Чтобы узнать больше о том, почему это так, см. Рекомендации: массивы в Firebase .

Когда вы отправляете глагол POST в API-интерфейс REST базы данных Firebase, он создает новый дочерний узел с так называемым push ID в качестве ключа. Это такие значения, как -LBaSxkTucRyHqfqEdDI, которые вы видите.

В базу данных Firebase не встроена поддержка генерации последовательных числовых индексов. Если вы настаиваете на их использовании, вам придется бросить свой собственный. Это означает, что у вас будет два варианта:

  1. Прочитать весь массив в клиенте, найти следующий индекс, а затем записать его обратно. Вы захотите сделать это в транзакции, чтобы пользователи не перезаписывали изменения друг друга.
  2. Отслеживайте самый высокий индекс, который вы раздавали в отдельном поле. Затем прочитайте это поле в клиенте, найдите следующий индекс и запишите его обратно. Вы также захотите сделать это в транзакции, но транзакция должна применяться только к счетчику.

Если это звучит сложнее и сложнее, чем вам хотелось бы: это одна из многих причин, по которым Firebase рекомендует не использовать числовые последовательные индексы, и не имеет встроенной операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...