Как получить данные из snapshot.forEach l oop и вернуться через маршрут get - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в Firebase и немного поработал с node.js. По сути, я хочу получить данные из моей коллекции «кофе» и отправить их через мой / тестовый маршрут, чтобы я мог работать с ними на своем веб-интерфейсе. Я не могу понять, как его вернуть.

Я получил его, чтобы вернуть первый индекс, но не остальную часть списка, поместив возвращаемый результат в forEach l oop. Но я хочу весь список.

//test route for database 
router.get("/test", (req, res) =>{
  // For loop goes thorugh our collection list and displays them in log. 
  db.collection('coffee').get().then((snapshot) => {
    let getCoffee = snapshot.forEach((doc) => {
      //console.log(doc.data());  
      const dataArray = [];
      dataArray.push(doc.data());
      console.log(dataArray);
    });
    return res.json(getCoffee);

  })
  .catch((err) => {
    console.log('Error getting documents', err);
  });


});

после редактирования:


router.get("/test", (req, res) =>{    
  // For loop goes thorugh our collection list and displays them in log. 
  db.collection('coffee').get().then((snapshot) => {
    let getCoffee = snapshot.map((doc) => {
      return doc.data();
    });

    return res.json(getCoffee);

  })
  .catch((err) => {
    console.log('Error getting documents', err);
  });


});


console.log (снимок) дает мне следующее:

CollectionReference {_firestore: Firestore {_settings: [Object], _settingsFrozen: true, _serializer: [Serializer], _projectId: 'test-3ad87', selectedListenersCount: 0, _lastSuccessfulRequest: 1587563014339, _backoffSettings: [Object], _preferTransactions: false] _olo: _ _queryOptions: QueryOptions {parentPath: [ResourcePath], collectionId: 'coffee', конвертер: [Object], allDescendants: false, fieldFilters: [], fieldOrders: [], startAt: undefined, endAt: undefined, limit: undefined, limitType: не определено, смещение: не определено, проекция: не определено}, _serializer: Serializer {createReference: [Function]}}, _readTime: метка времени {_секунд: 1587563014, _nanoseconds: 390810000}, _size: 12,

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020
let getCoffee = snapshot.docs.map((doc) => {

      return doc.data();
});
return res.json(getCoffee);
0 голосов
/ 22 апреля 2020

Ваш снимок работает с обещанием в блоках then и catch. Проблема в том, что ваш внешний метод get завершен задолго до того, как завершится внутреннее обещание. Убедитесь, что вы возвращаете результаты обещания, а не просто выполняете его.

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