【问题标题】:Firebase functions algolia onWrite [duplicate]Firebase函数algolia onWrite [重复]
【发布时间】:2018-05-18 11:36:40
【问题描述】:

我希望我为 firebase 添加的用户自动添加到 algolia,我创建了这样的功能,但我遇到了一些错误

我的 onWrite 函数

exports.updateIndex = functions.database.ref('/Users/{userId}').onWrite(event => {

        var client = algoliasearch(ALGOLIA_APP_ID,ALGOLIA_ADMIN_KEY);
        const index = client.initIndex('Users');

        const userId = event.params.userId;
        const data = event.data.val()

        if (!data) {
          return index.deleteObject(bookId, (err) => {
            if (err) throw err
            console.log('User Removed from Algolia Index', userId)
          })}

        data['objectID'] = userId

        return index.saveObject(data, (err, content) => {
          if (err) throw err
          console.log('User Updated in Algolia Index', data.objectID)
        })
      });

我收到这样的错误

 TypeError: Cannot read property 'userId' of undefined
        at exports.updateIndex.functions.database.ref.onWrite.event (/user_code/index.js:43:29)
        at Object.<anonymous> (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:112:27)
        at next (native)
        at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71
        at __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12)
        at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:82:36)
        at /var/tmp/worker/worker.js:716:24
        at process._tickDomainCallback (internal/process/next_tick.js:135:7)

其实我看不懂 database.ref('/Users/{userId}')? 我该怎么办?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database google-cloud-functions algolia


    【解决方案1】:

    改变这个:

    exports.updateIndex = functions.database.ref('/Users/{userId}').onWrite(event => {
      const userId = event.params.userId;
      const data = event.data.val()
    

    进入这个:

    exports.updateIndex = functions.database.ref('/Users/{userId}').onWrite((change,context) => {
      const userId = context.params.userId;
      const data = change.after.val();
    

    更新了云函数,onWrite 现在有两个参数changecontext。为了能够检索通配符,您需要使用context 参数。

    context 参数提供有关函数执行的信息。跨异步函数类型相同,上下文包含字段eventIdtimestampeventTyperesourceparams

    更多信息在这里:

    https://firebase.google.com/docs/functions/beta-v1-diff#realtime-database

    【讨论】:

      猜你喜欢
      • 2017-08-02
      • 2018-03-28
      • 2018-05-04
      • 2019-01-31
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      相关资源
      最近更新 更多