TypeError:res.send(..).then不是函数



在我的index.js内部,我有一个函数的结尾如下:

return res.send(response).then(saveProductID(uid, product.id));

在Firebase控制台中,它说:

TypeError:res.send(…(.then不是函数

完整代码示例:

exports.createConnectAccount = functions.https.onRequest(async (req, res) => {
var data = req.body
console.log(data, "<--  clark jable")
var uid = data.userID
console.log(uid, "<--  this is the uid")
var email = data.email
var response = {}
strip.accounts.create({
type: 'express',
country: 'US',
requested_capabilities: [
'transfers',
],
business_type: 'individual',
},
(err, account) => {
if (err) {
console.log("Couldn't create stripe account: " + err)
return res.send(err)
}
// createStripe_customers(uid, customer, intent)
console.log("ACCOUNT: " + account.id)
response.body = {
success: account.id
}
//createStripe_customers()
return res.send(response).then(createStripe_Accounts(uid, account));
}
);
});
function createStripe_Accounts(uid, account) {
console.log(uid, " did the createStripe_Accounts Run? ", account.id)
const userRef = admin.database().ref('Stripe_Accounts').child(uid) //.child(uid)
return userRef.set({
account_id: account.id,
});
}

.then()以前(并将继续(为许多其他功能工作为什么createConnectAccount会出现此错误

我在文档或源代码中没有看到任何暗示Response.send将返回Promise的内容,也没有看到任何假设它会返回Promise。它不是一个异步函数,在常见的成功案例中,它似乎会返回this(甚至这一点没有记录(。

我想知道你是不是";运气好";在过去使用.then()不是针对res.send的特定返回值,而是针对返回它的异步函数的返回值:

async foo(res) {
return res.send();
}
foo().then(a => console.log('this will work.'));

因为JS运行时会自动将async函数的返回值包装在Promise中,所以在使用此模式时,您总是会得到一个合适的对象。

我不确定您的代码片段中的具体内容,但我相信以下内容将具有您想要的行为:

res.send(response)
return createStripe_Accounts(uid, account);

相关内容

  • 没有找到相关文章

最新更新