【问题标题】:How to use SetOptions.merge with .set() when writing to Firestore in Cloud Functions在 Cloud Functions 中写入 Firestore 时如何使用 SetOptions.merge 和 .set()
【发布时间】:2020-07-05 06:27:41
【问题描述】:

我有一个云功能,可以在新用户注册时创建一个 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() 但它不起作用,我想更新,因为我还在 Firestore 上为 FCM 消息编写设备令牌。

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

我参考了谷歌云文档,他们说将其作为 {merge:true} 传递,但这也没有帮助。 我在stackoverflow上引用了这篇文章Why is my Cloud Firestore Transaction not merging when using SetOptions.merge()? 但这也没有用。 请帮助我,因为我对 Firestore 云功能了解不多

【问题讨论】:

  • 你现在正在做的事情不会奏效。文档很清楚你应该通过{merge:true}。这有什么问题?
  • 问题出在 user.providerData 上,它作为带有 function 的 json 对象返回,导致编码错误。至于合并选项,它是 .set(data,{merge:true})
  • 如果您说没有问题,请删除问题或直接回答您自己的问题。
  • 能否确认您已解决问题?
  • 是的@EnriqueDelValle 我的问题已经解决了。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2019-11-16
    • 2018-11-21
    • 2021-03-29
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多