在 Cloud Functions 中写入 Firestore 时如何将 SetOptions.merge 与 .set() 结合使用

Shu*_*uni 3 javascript firebase google-cloud-platform google-cloud-functions google-cloud-firestore

我有一个云函数,可以在注册新用户时创建 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;
  });
});
Run Code Online (Sandbox Code Playgroud)

我想使用 setoptions.merge() 但它不起作用,我想更新,因为我还在 firestore 上写入 FCM 消息的设备令牌。

NewUser ReferenceError:SetOptions未在cloudFunction(/srv/node_modules/firebase-functions/lib/cloud-functions.js)的exports.newUser.functions.auth.user.onCreate(/srv/index.js:26:67)处定义:131:23) 在 /worker/worker.js:825:24 在

我参考了谷歌云文档,他们说将其传递为 {merge:true} 但这也没有帮助。我在 stackoverflow 上引用了这篇文章为什么在使用 SetOptions.merge() 时我的 Cloud Firestore 事务未合并? 但这也行不通。请帮助我,因为我对 firestore 云功能不太了解

Shu*_*uni 6

问题出在user.providerData上,它以 json 对象的形式返回,其函数导致编码错误。至于合并选项,它是.set(data,{merge:true})