FIrestore document onUpdate: запуск только для указанных c полей - PullRequest
0 голосов
/ 29 мая 2020

в моей облачной функции у меня есть следующая функция:

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

И эта функция срабатывает каждый раз, когда какие-либо поля документа редактировались. Но я хочу запускать его только тогда, когда было изменено одно из указанных полей c (в данном случае, например: title, category), а не когда любое другое.

Как я могу это сделать это?

1 Ответ

1 голос
/ 30 мая 2020

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 ...
  }


});
...