Во-первых, честно говоря, я не являюсь ни разработчиком, ни реагирующим, ни экспертом по узлам. Я люблю функциональное программирование и асинхронную природу, которая привела меня в мир javascript. Я больше питоник.
У меня есть функция вызова из Firebase. Я могу напечатать вложенное значение с помощью console.log, но, тем не менее, не смог вернуть значение обратно в мое приложениеact-redux.
Я чувствую, что не правильно использую обещания. Я обрабатываю обещания каким-то образом вернуть значения, но могу сделать console.log только для того значения, которое я хочу, но не могу вернуть его из вызываемой функции firebase
Я создал вызываемую функцию firebase следующим образом. Действие Redux вызывает вызываемую функцию Firebase. Я получаю
// функция вызова пожарной базы
const functions = require('firebase-functions');
const cors = require('cors')({origin: true});
const dns = require('dns');
const util = require('util')
const getIP = function(domain) {
return new Promise((resolve, reject) => {
dns.lookup(domain, (err, res) => {
if(err) {
reject(err)
}
if (res) {
resolve(JSON.stringify(res))
}
})
})
}
exports.getIP = functions.https.onCall((data, context) => {
return {
addresses: getIP(data.domain).then((res) => {
console.log(res)
return res
}).catch((err) => {
console.log(err)
})
}
})
// действие хранилища реагировать на избыточность
export const getIPAddress = (domain) => {
return (dispatch, getState, {getFirebase}) => {
const firebase = getFirebase();
var dr = firebase.functions()
dr({
domain: domain
}).then((result) => {
console.log("check", result)
dispatch({ type: 'IPADDRESS_SUCCESS', result: result});
}).catch((err) => {
dispatch({ type: 'IPADDRESS_ERROR', err: err });
})
}
}
Ожидаемый результат: ['ipaddress1', 'ipaddress2']
Токовый выход: объект
data:
addresses:
domain: {domain: null, _events: {…}, _eventsCount: 1, _maxListeners: null, members: Array(0)}
__proto__: Object
__proto__: Object
__proto__: Object
type: "IPADDRESS_SUCCESS"
__proto__: Object