Я пытаюсь связать свою базу данных Firebase с функциями чередования через полосу, когда пользователь регистрируется на моей платформе, он автоматически создает продавца в полосе.Все работало нормально до прошлого месяца, затем из ниоткуда я сталкиваюсь с этой ошибкой.
Уже связались с поддержкой Firebase, они не могут найти причину ошибки, говоря, что они работают, чтобы найти решение, предлагаяследя за темой: https://issuetracker.google.com/u/1/issues/125425924
Некоторые люди говорят, что это может быть связано с неправильным использованием обещаний, кстати, я на Узле 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.registraPprietario:
// Registra un proprietario su stripe
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);
}
})
}
Я ожидаю, что чередование вернет идентификатор поставщика, зарегистрированного на платформе.
Вместо этого я получаю:
Ошибка: невозможно связаться с функцией.Запрос отклонен.
/// EDIT
На самом деле это была моя ошибка, я все время вызывал метод с неверной подписью, так как компилятор не давалмне любые предупреждения я не смог обнаружить его раньше, в любом случае вот ревизия:
//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"));
})
})