从节点返回数据而不是承诺

时间:2018-10-18 18:24:37

标签: node.js express promise

我是Node的新手,只是开始构建我的第一个后端服务。

我在这里想要做的非常简单,我从客户端获得了身份验证代码,并将使用此数据从Stripe API中获取帐户信息,然后将其发送回客户端以供进一步使用。

问题是,我得到的响应始终是一个已解决的promise,而不是promise值,当我在客户端记录此响应时,我可以看到promise值中的数据,如何获得该数据?

这是代码

wait_for

据我了解,promise正常运行,而res.send()确实在等待promise。但是为什么它仍然发出了诺言?更让我感到困惑的是,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); 上方的console.log(data)确实在云功能日志查看器中记录了正确的帐户信息。


这是我的客户端代码,很简单

res.send(data)

1 个答案:

答案 0 :(得分:0)

由于@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)
  })
})

它记录对象而不是现在承诺!