我有一个云功能,可以在创建新用户时将用户数据写入我的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进行解析。
我有更好的方法吗?
答案 0 :(得分:2)
为了能够保存用户数据,您需要将传递给event.data
的对象简化为其(JSON)数据。根据{{3}},event.data
参数为UserRecord
。如果您查看documentation它有一个toJSON()
方法,它似乎正是您所需要的。