FIrestore document onUpdate:仅针对特定字段触发

时间:2020-05-29 19:11:39

标签: firebase google-cloud-firestore google-cloud-functions

在我的云函数中,我有下一个功能:

export const collectionOnUpdate = functions.firestore.document('cards/{id}').onUpdate(async (change, context) => {
  await updateDocumentInAlgolia(change);
});

并且每次编辑文档的任何字段时都会触发此功能。但是我只想在更改了特定字段之一(在这种情况下,例如:titlecategory)时运行它,而不要在其他任何字段时运行。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

firebase firstore cloud functions是基于文档更改而不是基于文档字段的作品。

因此,如果要检查某些字段是否有任何更改,则必须手动检查

exports.updateUser = functions.firestore
.document('users/{userId}')
.onUpdate((change, context) => {

  // ...the new value after this update
  const newValue = change.after.data()||{};

  // ...the previous value before this update
  const previousValue = change.before.data()||{};

  // access a particular field as you would any JS property

  //The value after an update operation
  const new_name = newValue.name;

  // the value before an update operation
  const old_name = previousValue.name;

  if(new_name!==old_name){
   //There must be some changes
   // perform desired operations ...
  }else{
  //No changes to the field called `name`
  // perform desired operations ...
  }


});

答案 1 :(得分:0)

根据official docs,函数仅响应文档更改,而不能监视特定的字段或集合。