Вернуть данные вместо обещания от узла - PullRequest
0 голосов
/ 18 октября 2018

Я новичок в узле и только начал собирать свой первый бэкэнд-сервис.

То, что я пытаюсь сделать здесь, довольно просто, я получил код авторизации со стороны клиента и буду использовать эти данные для получения учетной записи.информация из API чередования затем отправит ее клиенту для дальнейшего использования.

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

Вот код

const app2 = express();
app2.use(cors({ origin: true }));
app2.post('/', (req, res) => {

let options = {
  url: 'https://connect.stripe.com/oauth/token',
  method: 'POST',
  body:req.body
};

function fetchToken(opt) {
  return new Promise((resolve, reject) => {
    request(opt,(err, tokenRes, body) => {
      if(err){
        reject(err);
      }
      resolve(body) ;
    })
  })
}

fetchToken(options).then(data => {
  console.log(data)
  return(res.send(data));
}).catch(e => console.log(e))

}

exports.connectHelper = functions.https.onRequest(app2);

, насколько я понимаю, обещание работает правильно, а res.send ()действительно ждал обещания.Но почему до сих пор отправлено обещание?Что делает меня еще более запутанным, так это то, что console.log(data) прямо над res.send(data) записал правильную информацию об учетной записи в просмотрщике журнала облачных функций.


Вот мой код на стороне клиента, который довольно прост

fetch(connectHelper,{
  method: 'POST',
  body: authCode,
}).then(res => {
  console.log(res.json())
})

1 Ответ

0 голосов
/ 19 октября 2018

Благодаря комментарию @Bergi я дважды проверяю свой код на стороне клиента, и проблема действительно возникает.

Я изменяю с

fetch(connectHelper,{
  method: 'POST',
  body: authCode,
}).then(res => {
  console.log(res.json())
})

на

fetch(
  connectHelper,
  {
    method: 'POST',
    body: authCode,
  }).then(res => {
    res.json()
    .then(data => ({data:data}))
    .then(res => {
       console.log(res.data)
  })
})

и теперь он записывает объект вместо обещания!

...