Cloud Functions auth onCreate 触发器将用户添加到 Firestore

Kev*_*291 3 firebase typescript firebase-authentication google-cloud-functions google-cloud-firestore

当用户通过 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;
    });
});
Run Code Online (Sandbox Code Playgroud)

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

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

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

Dan*_*ath 6

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;
    });
});
Run Code Online (Sandbox Code Playgroud)