【发布时间】: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