【发布时间】:2019-10-02 16:00:14
【问题描述】:
首先,公平地说,我既不是开发人员,也不是 reactjs 或节点专家。我喜欢将我吸引到 javascript 世界的函数式编程和异步特性。我更像是一个喜欢蟒蛇的人。
我有一个 firebase 可调用函数。我可以使用 console.log 打印嵌套值,但未能将值返回到我的 react-redux 应用程序。
我强烈觉得我没有正确使用 Promise。我正在处理以某种方式返回值的承诺,但我只能对我想要的值执行 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
【问题讨论】:
标签: node.js reactjs ecmascript-6 promise google-cloud-functions