如何使用Firebase Cloud函数更新Algolia索引



Am使用algolia作为我的firebase应用程序的全文搜索,我能够通过firebase云功能创建和删除索引,但要更新,我尝试过,但没有成功,以下是功能:

//* 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(),
})
})

但它没有起作用,当我部署函数"时,它给出了一个错误;类型"Change<"上不存在属性"id";QueryDocumentSnapshot>'">

该错误与Algolia无关。它是由TypeScript引发的,因为您正试图访问onUpdatefirestore触发器中的snap.id

查看API参考资料(https://firebase.google.com/docs/reference/functions/providers_firestore.documentbuilder.html#onupdate)您可以看到,传递给回调函数的第一个参数的类型是Change<DocumentQuerySnapshot>。Change为其beforeafter属性使用泛型类型(在本例中为DocumentQuerySnapshot(。Change类型本身没有属性id

因此,尝试这样访问它:snap.after.id

相关内容

  • 没有找到相关文章