将UserRecord对象写入firestore文档

时间:2018-01-09 11:05:38

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

我有一个云功能,可以在创建新用户时将用户数据写入我的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进行解析。

我有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

为了能够保存用户数据,您需要将传递给event.data的对象简化为其(JSON)数据。根据{{​​3}},event.data参数为UserRecord。如果您查看documentation它有一个toJSON()方法,它似乎正是您所需要的。