首页 > 解决方案 > 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 返回的公司数据并感谢任何帮助。谢谢。

标签: javascriptnode.jsgoogle-cloud-firestoreasync-await

解决方案


getEmployerData不返回任何东西。尝试...

// ...
return fetch()

推荐阅读