Как использовать SetOptions.merge с .set () при записи в Firestore в облачных функциях - PullRequest
1 голос
/ 24 марта 2020

У меня есть облачная функция, которая создает запись Firestore, когда новый пользователь зарегистрирован

exports.newUser = functions.auth.user().onCreate((user) => {

  var userObject = {
     displayName : user.displayName,
     picUrl:user.photoURL,
     authType:user.providerData,
     email : user.email,
     newUser: true,
     bookings:0
  };

  console.log("Merge:true")
  return admin.firestore().doc('users/'+user.uid).set(userObject, SetOptions.merge())
  .then((response)=>{
    console.log("New user result: ",response)
    return response;
  }).catch((err)=>
  {
    console.log("New user Error: "+err)
    return err;
  });
});

Я хочу использовать setoptions.merge (), но это не работает, я хочу обновить, потому что я также запись токена устройства в хранилище для сообщений FCM.

NewUser ReferenceError: SetOptions не определен в exports.newUser.functions.auth.user.onCreate (/srv/index.js:26 : 67) в cloudFunction (/srv/node_modules/firebase-functions/lib/cloud-functions.js:131:23) в /worker/worker.js:825:24 в

Я сослался на документацию по облаку Google, где они сказали передать его как {merge: true}, но это также не помогло. Я ссылался на этот пост в stackoverflow Почему моя транзакция облачного хранилища файлов не сливается при использовании SetOptions.merge ()? Но это также не сработало. Пожалуйста, помогите мне, так как я не очень разбираюсь в облачных функциях Firestore

1 Ответ

0 голосов
/ 25 марта 2020

Проблема была с user.providerData , которые возвращаются как json объект с функцией, которая вызывала ошибку кодирования. Что касается параметров слияния, то это .set(data,{merge:true})

...