У меня есть функция, запускаемая при создании документа.
Когда я отправляю эту информацию во внешний API, Firebase возвращает сообщение «ОК» до завершения вызова API.
const functions = require('firebase-functions');
const request = require('request');
const admin = require('firebase-admin');
const rp = require('request-promise');
const port = '****';
const ip = '***.***.***.***';
admin.initializeApp(functions.config().firebase);
exports.sendUser = functions.firestore
.document('user/{userId}')
.onCreate((snap, context) => {
const data = snap.data();
const options = {
method: 'POST',
uri: 'http://' + ip + ':' + port + '/user',
body: data,
json: true,
};
rp(options)
.then(function (parsedBody) {
console.log('TEN ', parsedBody);
return parsedBody;
})
.catch(function (err) {
console.log('ERR ', err);
return err;
});
});
Как вы можете видеть из моей функции, она не делает ничего особенного, кроме отправки данных во внешний источник.
API выглядит следующим образом: -
app.post('/user', function (req, res) {
fs.exists(path, function(exists) {
if (exists === true) {
console.log('Currently Printing Different User Info');
fs.unlinkSync(path);
res.status(404).json({errorCode: 404, errorMessage: 'Currently Printing Different User.'});
return;
} else {
fs.writeFile(path, '', () => { console.log('File Created'); });
fs.unlinkSync(path);
res.status(200).json({statusCode: 200, statusMessage: 'Here we go'});
return;
}
});
})
Какмогу ли я заставить Firebase распознать возвращенный 404 как неудавшийся вызов, а также подождать, пока вызов не будет завершен, прежде чем он вернет ok или сбой.
API работает правильно с Почтальоном, но не когда данные публикуются через Firebase.Кто-нибудь сталкивался с этим раньше, или кто-нибудь может увидеть, что я делаю неправильно?
Данные анализируются на подачу, но только после того, как Firebase вернул 'ok', даже если я намеренно вызвал ошибку.
Мне нужно это на месте, чтобы можно было использовать функцию повтора функции облака Firebase.
Изображения можно увидеть @ https://imgur.com/a/1qYxrci