Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 云函数auth onCreate触发器将用户添加到firestore_Typescript_Firebase_Firebase Authentication_Google Cloud Functions_Google Cloud Firestore - Fatal编程技术网

Typescript 云函数auth onCreate触发器将用户添加到firestore

Typescript 云函数auth onCreate触发器将用户添加到firestore,typescript,firebase,firebase-authentication,google-cloud-functions,google-cloud-firestore,Typescript,Firebase,Firebase Authentication,Google Cloud Functions,Google Cloud Firestore,当用户通过GoogleAuth注册时,我试图向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 => {

当用户通过GoogleAuth注册时,我试图向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])编码为Firestore值 在Function.encodeValue(/user\u code/node\u modules/firebase admin/node\u modules/@google cloud/firestore/src/document.js:773:11)

我不知道这为什么不起作用。有什么想法吗?
感谢

用户。数据
不是有效的云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;
    });
});

根据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)));
});