【问题标题】:Writing UserRecord object to firestore document将 UserRecord 对象写入 Firestore 文档
【发布时间】:2018-06-18 09:44:58
【问题描述】:

我有一个云功能,可以在创建新用户时将用户数据写入我的 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 对象,但如果我尝试直接设置它,我会得到 ​​p>

错误:参数“数据”不是有效的文档。输入不是普通的 JavaScript 对象。

所以我求助于进行字符串化然后解析。

我应该这样做有更好的方法吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 除非它没有。如果我在 event.data 上调用 toJSON() 会引发错误 toJSON() is not a function。 UserRecord 本身看起来是一个普通的 javascript 对象,但它不是,它缺少 toJSON() 调用。
    猜你喜欢
    • 2021-07-25
    • 2022-01-25
    • 2020-12-04
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多