首先,公平地说,我既不是开发人员,也不是reactjs或节点专家。我喜欢吸引我进入JavaScript世界的函数式编程和异步特性。我更像一个蟒蛇人。
我有一个firebase可调用函数。我可以使用console.log打印嵌套值,但是无法将值返回到我的react-redux应用程序。
我强烈认为我没有正确使用诺言。我正在处理以某种方式返回值的承诺,但只能在console.log上输入所需的值,但无法从firebase可调用函数
返回我创建了如下的firebase可调用函数。 Redux操作会调用firebase可调用函数。我得到
// 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)
})
}
})
// react-redux存储操作
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
答案 0 :(得分:0)
尝试一下:
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(res)
}
})
})
}
exports.getIP = functions.https.onCall(async (data, context) => {
try {
return {
addresses: await getIP(data.domain)
};
} catch (err) {
console.log(err);
}
})