如果用户创建新文档,如何使用云函数将 Firestore 数据索引到 Algolia?

How to index Firestore data into Algolia using cloud functions if a user creates a new document?

要求的行为:
我想创建一个云函数,每当用户在 Firestore 中创建一个新文档时,它就会向 Algolia 索引添加一个新条目。

当前状态
如果用户创建新文档,云功能会成功触发。但是,该函数不会为 Algolia 索引创建新条目。

问题
相反,它会抛出一个我不理解的 firestore 控制台错误。该函数不会抛出任何额外的 ts-lint 错误。

What does the error mean and how can I fix it? Do I handle the document ID correctly or is there an issue with the Algolia configuration?

我的代码:

// importing libaries

import * as admin from 'firebase-admin';
import * as functions from 'firebase-functions';
import * as algoliasearch from 'algoliasearch';


// setting up environment

const ALGOLIA_APP_ID = 'my-app-id';
const ALGOLIA_ADMIN_KEY = 'my-admin-key';
admin.initializeApp(functions.config().firebase);


// Call onCreate to add data to ALgolia Index

export const ideaIndexAdd = functions.firestore
  .document('ideas/{ideaID}')
  .onCreate((snap, context) => {
  
    const data = snap.data();
    const objectID = snap.id;
    const client = algoliasearch(ALGOLIA_APP_ID, ALGOLIA_ADMIN_KEY);
    const index = client.initIndex('ideas');

    // Add the data to the algolia index
    return index.addObject({
      objectID,
      ...data
    });
});

firestore 控制台错误

AlgoliaSearchNetworkError: getaddrinfo ENOTFOUND azrzbvfkpr-2.algolianet.com azrzbvfkpr-2.algolianet.com:443
    at ClientRequest.error (/user_code/node_modules/algoliasearch/src/server/builds/node.js:233:14)
    at ClientRequest.g (events.js:292:16)
    at emitOne (events.js:96:13)
    at ClientRequest.emit (events.js:188:7)
    at TLSSocket.socketErrorListener (_http_client.js:324:9)
    at emitOne (events.js:96:13)
    at TLSSocket.emit (events.js:188:7)
    at connectErrorNT (net.js:1034:8)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickDomainCallback (internal/process/next_tick.js:128:9)

在我看来,您的 Firebase 项目是免费的 Spark 计划,该计划不支持联网到未完全受 Google 控制的端点。如果您想连接到 Google.

以外的服务,您必须将项目升级为付费计划