将UserRecord对象写入firestore文档

我有一个 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)

3 years ago

为了能够保存用户数据,您需要将传递给 event.data 的对象简化为其(JSON)数据 . 根据documentationevent.data 参数是 UserRecord . 如果你看一下reference document for UserRecord它有一个 toJSON() 方法,似乎正是你所需要的 .