javascript - Google Firestore 云函数中的异步/等待调用(使用 Clearbit 公司 API)
问题描述
我正在构建一个简单的反应应用程序来存储具有 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 返回的公司数据并感谢任何帮助。谢谢。
解决方案
getEmployerData
不返回任何东西。尝试...
// ...
return fetch()
推荐阅读
- scala - 在给出类型不匹配错误Scala的方法中调用方法
- android - 小部件中的 onReceive() 在 api>26 中未触发
- android - 动画未显示 - 为什么?
- security - 源代码分析和目标文件分析有什么区别?
- php - 如何在 laravel 的多身份验证系统中自定义密码重置电子邮件
- reactjs - 如何使用反应钩子useState添加到对象?
- javascript - 动态更改的列表无法按预期工作 - 需要纯 js
- sql - 如何从两个符号之间的字符串中获取子字符串
- java - CS50 Credit : 似乎找不到错误,
- javascript - 在 $.ajax 中使用“POST”方法传递数据时出现 500 内部服务器错误