我正在尝试通过功能将Firebase数据库链接到Stripe Connect,当用户注册到我的平台时,它将自动在Stripe中创建卖方。一切正常,直到上个月,然后我无处不面临着这个错误。
已经联系了Firebase支持人员,他们无法找到错误原因,称他们正在努力寻找解决方案,建议密切关注线程: https://issuetracker.google.com/u/1/issues/125425924
有人说这可能与对诺言的错误使用有关,顺便说一句,我在Node 6上
该函数在数据库的触发器和http请求函数上均被拆分
这是我的index.js
exports.setPagamentiProprietario = functions.https.onRequest((req, res) => {
let IDProprietario = req.url.replace('/','');
if(IDProprietario === null){
return res.status(400).send(impacchettaInformazioni(err,"invalid user id","400"));
}
return admin.auth().getUser(IDProprietario).then(function(userRecord) {
const email = userRecord.email;
return funcPagamenti.registraProprietario(IDProprietario,email,admin.database()).then(function(data){
return res.status(200).send(impacchettaInformazioni(data,"ok","200"));
}).catch(err => {
console.log("errore registrazione stripe" + err);
return res.status(500).send(impacchettaInformazioni(err,"error","500"));
})
}).catch(err => {
console.log("errore registrazione stripe" + err);
return res.status(500).send(impacchettaInformazioni(err,"error","500"));
})
})
exports.proprietarioCreato = functions.database.ref("Proprietari/{IDPropietario}").onCreate(event =>{
const IDProprietario = event.params.IDUProprietario;
const proprietario = event.data;
return admin.auth().getUser(IDProprietario).then(function(userRecord) {
const email = userRecord.email;
return funcPagamenti.registraProprietario(IDProprietario,proprietario,email,admin.database());
}).catch(function(error) {
console.log("Erorre registrazione proprietario STRIPE:", error);
});
})
这是我的funcPagamenti.registraProprietario:
//条带注册
exports.registraProprietario = function(IDProprietario,proprietario,email,database) {
return new Promise((res, rej) => {
try{
stripe.accounts.create({
type: 'custom',
country: 'IT',
first_name: proprietario.Nome,
last_name: proprietario.Cognome,
email: email
}, function(err, customer) {
if(err !== null){
console.log(err);
return rej(err);
}
return database.ref('Proprietari').child(IDProprietario).update({"IDPagamenti":customer.id}).then(function(){
return res(custumer.id);
}).catch(err => {
console.log(err);
console.log("Errore update proprietario" + err);
return rej(err);
})
});
}catch(errore){
console.log(err);
return rej(errore);
}
})
}
我希望数据条返回注册到平台的供应商的ID。
相反,我得到了:
错误:无法与函数通信。请求被拒绝。
/// 编辑
实际上这是我的错,我一直使用错误的签名来调用该方法,因为编译器没有向我发出任何我之前无法检测到的警告,无论如何,这是修订版:
//Registra un proprietario per accettare i pagamenti
exports.setPagamentiProprietario = functions.https.onRequest((req, res) => {
let IDProprietario = req.url.replace('/','');
if(IDProprietario === null){
return res.status(400).send(impacchettaInformazioni(err,"invalid user id","400"));
}
return admin.auth().getUser(IDProprietario).then(function(userRecord) {
return admin.database().ref("Proprietari").child(IDProprietario).once("value").then(snap => {
const email = userRecord.email;
return funcPagamenti.registraProprietario(req.connection.remoteAddress,IDProprietario,snap.val(),email,admin.database()).then(function(data){
return res.status(200).send(impacchettaInformazioni(data,"ok","200"));
}).catch(err => {
console.log("errore query proprietario" + err);
return res.status(500).send(impacchettaInformazioni(err,"error","500"));
})
}).catch(err => {
console.log("errore registrazione stripe" + err);
return res.status(500).send(impacchettaInformazioni(err,"err","500"));
})
}).catch(err => {
console.log("errore registrazione stripe" + err);
return res.status(500).send(impacchettaInformazioni(err,"error","500"));
})
})
答案 0 :(得分:0)
在调用Stripe node.js API时,您可能应该使用Promise而不是回调函数。
如documentation中所述:
每个方法都返回一个可链接的promise,可用于代替 定期回调
因此,您可以如下更改team1
:
put YouUploadFileName
export -a YouUploadFileName