узел js с функцией firebase ничего не возвращает

#node.js #firebase #google-cloud-firestore

#node.js #firebase #google-облако-firestore

Вопрос:

метод post ничего не возвращает, аналогично методу get код находится на узле js с использованием firebase настройка базы огня выполнена, но когда передается json, он возвращает пустой

 exports.postBlog = (req, res) => {
  (async() => {
    try {
      await dbs.collection('myBlog').doc('zim').set(data);

      return res.status(200).send();
    } catch (error) {
      console.log("there was an error running this file");
      return res.status(500).send(error);
    }
  })();
};

exports.getblog = (req, res) => {
  (async() => {
    try {
      const page = dbs.collection('myblog').doc('zim');
      await page.get(data);

      return res.status(200).send(response);
    } catch (error) {
      console.log(error);
      return res.status(500).send(error);
    }
  })();
};
  

Комментарии:

1. Мне трудно понять, в чем проблема. 1) Где вы запускаете этот код? 2) Когда вы отлаживаете этот код построчно, какая конкретная строка не выполняет то, что вы ожидаете от нее?

2. я запускаю код в vs code, синтаксис в порядке, но когда вы отправляете объект json, он возвращает пустой. его код узла js

3. когда я развертываю его по командной строке, он развертывается, но когда вы отправляете .json, он возвращает пустой

4. exports.postBlog = (req, res) =>{ (async () =>{ try { const data = { title: 'chief', body: 'chest', footer: 'date' }; await dbs.collection('myBlog').doc('zim').set(data); return res.status(200).send(); }catch(error){ console.log("there was an error running this file"); return res.status(500).send(error); } })(); };

5. когда я передаю что-то, оно возвращает пустое

Ответ №1:

Мы не знаем, что конкретно вы используете, но, вероятно, используете какой node -то подобный сервер express . Как правило, всю respose документацию вы можете найти здесь. Я предполагаю, что код работает и не возвращает никаких ошибок.

Итак, в postBlog вам нужно вернуть что-то в send методе, в зависимости от того, что вы хотите вернуть в ответ. Простейшим примером может быть возврат текста, например, «Документ, сохраненный в Firestore». Для достижения этого вы можете добавить параметр в функцию отправки:

 return res.status(200).send("Document saved in Firestore");
  

Другое дело, что мы не знаем, что на самом деле делает функция, поскольку она записывает в undefined объект data firestore (по крайней мере, просматривая опубликованный код). Вы должны написать некоторый объект в set методе. Пожалуйста, найдите (документацию) и пример для node.js .

Когда дело доходит до getblog неопределенного, это, вероятно, потому, что вы отправляете объект respose , который не определен в коде. Опять же, мы не знаем, чего вы хотите достичь в логике… Снова использовался объект данных, однако, согласно документации get API, он может иметь параметр, но это параметры, и обычно они не используются. Вы можете попробовать это:

 exports.getblog = (req, res) => {
  (async() => {
    try {
      const page = dbs.collection('myblog').doc('zim');
      let documentSnapshot = await page.get();
      let response = documentSnapshot.data();

      return res.status(200).send(response);
    } catch (error) {
      console.log(error);
      return res.status(500).send(error);
    }
  })();
};
  

Я настоятельно рекомендую попробовать этот документ Get started with Cloud Firestore, который содержит оба set и get примеры. Пример get метода записывается в консоль там, однако вы можете легко принять код, изменив cosole.log на res.status(200).send .