我有一个 Cloud 功能,可以在创建新用户时将用户数据写入我的firestore
const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);
var db = admin.firestore();
exports.addNewUserToCollection = functions.auth.user().onCreate(event => {
const user = event.data; // The Firebase user.
// if we don't do this song and dance we get the following error
// Error: Argument "data" is not a valid Document. Input is not a plain JavaScript object.
var userData = JSON.parse(JSON.stringify(user));
return db.collection('users').doc(user.uid).set(userData);
});
我的问题是围绕文档设置数据 .
根据文档的event.data是UserRecord对象 . 当我控制台登录时,它看起来像一个javascript对象,但如果我尝试直接设置它我得到
错误:参数“数据”不是有效的文档 . 输入不是普通的JavaScript对象 .
所以我使用stringify然后解析 .
Is there a better way i should be doing this?
1 回答
为了能够保存用户数据,您需要将传递给
event.data
的对象简化为其(JSON)数据 . 根据documentation,event.data
参数是UserRecord
. 如果你看一下reference document for UserRecord它有一个toJSON()
方法,似乎正是你所需要的 .