чтение данных электронной таблицы Google с использованием node js не работает ..? - PullRequest
0 голосов
/ 15 января 2020

Я использую почтальона для вызова API. Я пытаюсь прочитать строку таблицы Google, используя node js. Ответ печатается на консоли, но не возвращается почтальону.

index. js файл

app.post('/myapi/getClientkey',async (req, res) => {
  var response = null;
  console.log("Inside myapi");
  try {
    response = await spreadsheet.getRecord();
  } catch(err){

  }
  res.send(response);
});

электронная таблица. js

var config = require('./config.json');
var GoogleSpreadsheet = require('google-spreadsheet');
var creds = {
  client_email: config.client_email,
  private_key: config.private_key
}
var doc = new GoogleSpreadsheet(config.GOOGLE_SHEET_ID)
var sheet = null;


exports.getRecord =  async function () {

  console.log('Inside - getRecord');
  var name = null;
  var jsonObj = {};
  try {
          doc.useServiceAccountAuth(creds, async function (err) {
            // Get all of the rows from the spreadsheet.
            await doc.getRows(1, async function (err, rows) {
                if(rows != null){
                  var oneRow = rows[0];
                  name = oneRow.name;
                  console.log("name :"+name);
                  jsonObj.client_name = name.toString();
                }
              console.log(jsonObj);  
            });
          }); 
   }catch(err){
      console.log("err :"+err);
  }
  return jsonObj;
};

Как ожидать ответа от функции getRecord

Ответы [ 2 ]

1 голос
/ 15 января 2020

Переместите res.send(response); внутрь try блока и прочитайте о как вернуть ответ от асинхронного c вызова .

Также return jsonObj должно быть внутри try блока

0 голосов
/ 24 января 2020

Я использовал обещание вызова, теперь оно работает.

exports.getRecord =  async function () {

  console.log('Inside - getRecord');
  var name = null;

  return new Promise( async function(resolve,reject){
      try {
              var jsonObj = {};
              doc.useServiceAccountAuth(creds, async function (err) {
                // Get all of the rows from the spreadsheet.
                await doc.getRows(1, async function (err, rows) {
                    if(rows != null){
                      var oneRow = rows[0];
                      name = oneRow.name;
                      console.log("name :"+name);
                      jsonObj.client_name = name.toString();
                    }
                  console.log(jsonObj);  
                  resolve(jsonObj);
                });
              }); 
       }catch(err){
          console.log("err :"+err);
          reject();
      }
    }); // end of promise
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...