【发布时间】:2020-09-30 08:49:41
【问题描述】:
我正在构建一个简单的 React 应用来存储具有 Firebase 后端和云功能的公开公司数据。我想编写一个 onCreate 云函数来从 Clearbit 的 API (https://clearbit.com/docs#api-reference) 中提取额外的公司数据。以下是 Clearbit 文档中关于如何执行此操作的摘要:
const clearbit = require('clearbit')(api-key);
clearbit.Company.find({domain: 'segment.com'}).then(function (company) {
console.log('Name: ', company.name);
});
我想将其转换为等待/异步,并且这样做了:
const getEmployerData = (domain) => {
async function fetch() {
try {
const response = await clearbit.Company.find({ domain: domain });
console.log(response)
} catch (err) {
console.log("fetch failed", err);
}
return response;
}
fetch();
};
我可以确认 clearbit.Company.find() 正在工作,因为上面的 console.log 返回以下内容:
response= Resource {
options: {},
id: 'f3514cf8-c3c1-4eb4-be6a-13604de59c8b',
name: 'Segment',
legalName: 'Segment.io Inc',
domain: 'segment.com',
domainAliases: [ 'segment.io' ],
description: 'Segment is a customer data platform (CDP) that helps you collect, clean, and control your customer data.',
...
}
我在我的云函数中调用 getEmployerData,如下所示:
exports.updateEmployerData = functions.firestore
.document("/employers/{documentId}")
.onCreate(async (snap, context) => {
const employerId = context.params.documentId;
const url = snap.get("url");
const employerDataFromClearbit = await getEmployerData(url);
const employerRef = admin
.firestore()
.collection("employers")
.doc(employerId);
return await employerRef.update({
description: employerDataFromClearbit.description;
});
});
但是,getEmployerData() 返回 undefined 并且我的更新函数失败。不知道为什么我无法在我的云功能中访问 Clearbit 返回的公司数据并感谢任何帮助。谢谢。
【问题讨论】:
标签: javascript node.js google-cloud-firestore async-await