【问题标题】:Cloud Functions auth onCreate trigger add user to firestoreCloud Functions auth onCreate 触发器将用户添加到 Firestore
【发布时间】:2018-07-05 06:13:45
【问题描述】:

当用户通过 google auth 注册时,我正在尝试将用户对象添加到 firestore。这是我的代码:

export const accountCreate = functions.auth.user().onCreate(user => {
    console.log(user.data);
    admin.firestore().collection('users').doc(user.data.uid).set(user.data).then(writeResult => {
        console.log('User Created result:', writeResult);
        return;
    }).catch(err => {
        console.log(err);
        return;
    });
});

不走运,我只是不断收到错误:

错误:无法将类型 ([object Object]) 编码为 Firestore 值 在 Function.encodeValue (/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/document.js:773:11)

我不确定为什么这不起作用。有任何想法吗? 谢谢

【问题讨论】:

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


    【解决方案1】:

    user.data 不是有效的 Cloud Firestore 文档,因此 Firestore 拒绝写入。相反,您应该设置您关心的特定字段,例如:

    export const accountCreate = functions.auth.user().onCreate(user => {
        console.log(user.data);
        userDoc = {'email' = user.data.email, 
                   'displayName' = user.data.displayName}
        admin.firestore().collection('users').doc(user.data.uid)
        .set(userDoc).then(writeResult => {
            console.log('User Created result:', writeResult);
            return;
        }).catch(err => {
           console.log(err);
           return;
        });
    });
    

    【讨论】:

      【解决方案2】:

      根据 Dans 的回答,可以只序列化 UserRecord 并将所有内容放入文档中,而无需考虑您的内容:

      一个完整的工作示例:

      import * as functions from 'firebase-functions';
      
      const admin = require('firebase-admin');
      
      admin.initializeApp({
        databaseURL: 'https://challenges-f9f6b.firebaseio.com'
      });
      
      export const addUser = functions.auth.user().onCreate((user) => {
        return admin
          .firestore()
          .collection('users')
          .doc(user.uid)
          .set(JSON.parse(JSON.stringify(user)));
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-16
        • 2018-03-27
        • 2020-02-04
        • 2021-10-06
        相关资源
        最近更新 更多