如何使用Firebase云函數更新Algolia索引

我使用algolia作為我firebase應用程序的full-text搜索,我能夠通過firebase-cloud-functions創建和刪除索引,但為了更新,我嘗試了以下功能,但沒有成功:

//* am using Typescript
const env = functions.config()

const client = algoliasearch(env.algolia.app_id, env.algolia.admin_api_key)
const index = client.initIndex('Products')

//the function to create index
export const onProductCreated = functions.firestore
  .document('Products/{productId}')
  .onCreate((snap, ctx) => {
    return index.saveObject({
      objectID: snap.id,
      ...snap.data(),
    })
  })

//the function to delete index
export const onProductDeleted = functions.firestore
  .document('Products/{productId}')
  .onDelete((snap, ctx) => {
    return index.deleteObject(snap.id)
  })

然后為了更新它,我嘗試了以下功能

export const onProductCreated = functions.firestore
  .document('Products/{productsId}')
  .onUpdate((snap, ctx) => {
    return index.partialUpdateObject({
      objectID: snap.id,
      ...snap.data(),
    })
  })

但它不起作用,當我部署函數“屬性'id'在類型'Change<QueryDocumentSnapshot>上不存在”時,它給出了一個錯誤

? 最佳回答:

這個錯誤與Algolia無關。它由TypeScript拋出,因為您試圖訪問onUpdatefirestore觸發器中的snap.id。

查看API參考(https://firebase.google.com/docs/reference/functions/providers_firestore.documentbuilder.html#onupdate)可以看到,傳遞給回調函數的第一個參數的類型是Change<DocumentQuerySnapshot>。Change將泛型類型(在本例中為DocumentQuerySnapshot)用于其beforeafter屬性。Change類型本身沒有屬性id

因此,試著像這樣訪問它:snap.after.id。

主站蜘蛛池模板: 日韩精品一区二区三区老鸦窝| 合区精品久久久中文字幕一区| 综合一区自拍亚洲综合图区| 插我一区二区在线观看| 一区二区三区视频网站| 日韩人妻精品无码一区二区三区 | 亚洲av乱码一区二区三区 | 天堂资源中文最新版在线一区| 成人一区专区在线观看| 人妻无码一区二区不卡无码av| 色婷婷AV一区二区三区浪潮| 国产精品无码一区二区三区免费| 亚洲一区二区影视| 无码国产精品一区二区免费16| 国产精品一区二区久久精品无码| 国产精品亚洲一区二区三区在线观看 | 国产在线精品一区二区在线观看| 日本一区二区三区在线看| 日日摸夜夜添一区| 中文字幕在线不卡一区二区| 中文字幕一区二区三区在线播放| 无码人妻一区二区三区精品视频 | 伊人色综合视频一区二区三区| 国产精品日本一区二区不卡视频| 一区二区三区精品视频| 岛国精品一区免费视频在线观看| 日韩一区二区三区在线精品| 一区二区三区四区无限乱码 | 99精品国产一区二区三区2021| 亚洲一区二区三区日本久久九| 久久精品一区二区| 国产香蕉一区二区精品视频| 久久久av波多野一区二区| 亚洲丰满熟女一区二区v| 亚洲视频一区在线| 无码人妻一区二区三区兔费| 日韩精品免费一区二区三区| 亚洲一区二区三区免费| 国产激情视频一区二区三区| 国产成人综合一区精品| 理论亚洲区美一区二区三区|