Преобразование кода приложения Firebase для использования Fetch API - PullRequest
1 голос
/ 02 мая 2020

Я работаю с кодом в этом хранилище React-powered Hacker News клиент и хотел бы изменить его, чтобы использовать fetch вместо Hacker News firebase Спецификация API c код, который используется в настоящее время (как учебное упражнение).

Это - код, требующий firebase/app и firebase/database. Прежде чем я потрачу много времени на это, возможно ли мне (только с базовым c опытом Javascript / React) обновить его, чтобы использовать fetch вместо проприетарного кода firebase?

Насколько я понимаю, что Я мог бы использовать fetch для извлечения данных, т.е. что-то, основанное на:

fetch('https://hacker-news.firebaseio.com/v0/')
  .then(response => {
    return response.json()
  })
  .then(data => {
    // Work with JSON data here
    console.log(data)
  })

  })

Я не уверен, как бы я эмулировал функции такого рода, хотя они используют код firebase.database().

function storiesRef(path) {
  return api.child(path)
}

function itemRef(id) {
  return api.child('item/' + id)
}

function userRef(id) {
  return api.child('user/' + id)
}

function updatesRef() {
  return api.child('updates/items')

1 Ответ

0 голосов
/ 03 мая 2020

Предполагая, что ваша структура данных одинакова, вы должны иметь возможность доступа к объекту данных таким же образом; так для вашей itemRef функции: return data.item[id];

function userRef(id) {
   return dataAPI.user[id];
}

var user = userRef('1234567890xxxx');

Пока у вас есть данные, возвращенные из вашего запроса API от заданной конечной точки, вы должны иметь возможность рассуждать об этом, как и любой типичный объект.

var dataAPI = fetch('https://hacker-news.firebaseio.com/v0.json') // append .json at the end of the url to make a RESTful request
  .then(response => {
    return response.json()
  })
  .then(data => {
    // Work with JSON data here
    return data;
  }, error => {
    console.error('onRejected function called: ' + error.message);
  })


function storiesRef(path) {
  //return api.child(path)
  return dataAPI[path];
}

function itemRef(id) {
  //return api.child('item/' + id)
  return dataAPI.item[id];
}

function userRef(id) {
  //return api.child('user/' + id)
  return dataAPI.user[id];
}

function updatesRef() {
  //return api.child('updates/items')
  return dataAPI.updates.items;
}

Некоторые другие примечания:

  1. для запроса URL-адреса базы данных Firebase, добавьте .json в конец URL-адреса (см .: firebase .google.com / docs / database / rest / start и firebase.google.com / docs / database / rest / retrieve-data ).
  2. API-интерфейс Firebase REST требует проверки подлинности токена (см .: stackoverflow.com / questions / 40520696 / how-do-i-access-my-firebase-database-via-http-rest-api ).
  3. API-интерфейс Firebase REST предназначен для использования непосредственно из командной строки или с сервера (по крайней мере, для полных операций CRUD).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...