我是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)
答案 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)
})
})
它记录对象而不是现在承诺!