身份验证触发的云功能(创建用户)未执行

时间:2019-07-24 07:02:19

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

不明白我在做什么错。 我已经成功部署了这些功能,并且可以在项目的仪表板上看到它们,但是在对新用户进行身份验证时,该功能不会执行。

此功能的目的是在数据库中为此新注册用户创建一个新的用户对象。

当我注册一个新用户(我一直在使用google登录)时,数据库中没有任何反应。但是,当我转到“身份验证”标签时,我可以看到一个新用户已通过身份验证。

这是我的index.ts文档:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

admin.initializeApp(functions.config().firebase);
const db = admin.firestore();

export const createUser = functions.auth.user().onCreate((user)=>{
const newUser = new MyUser(user.uid, "Friend","", new Array, Array("en"),0,0,0 )
return db.doc("users/"+user.uid).set({newUser});
});

class MyUser{
    uid: String;
    first_name: String;
    last_name: String;
    communities_list: Array<string>;
    lang_list: Array<string>;
    reputation: Number;
    join_date: Number;
    last_activity: Number;
    constructor(uid:string, first_name:string, last_name:string, communities_list:Array<string>, lang_list:Array<string>, reputation:Number, join_date:Number, last_activity:Number) { 
      this.uid = uid;
      this.first_name = first_name; 
      this.last_name = last_name; 
      this.communities_list = communities_list; 
      this.lang_list = lang_list; 
      this.reputation = reputation; 
      this.join_date = join_date; 
      this.last_activity = last_activity; 
   }  
}

1 个答案:

答案 0 :(得分:0)

我的问题是我尝试设置的对象。挖掘完它(云功能的新手)后,我在云功能中看到了以下消息:

Error: Value for argument "data" is not a valid Firestore document. Couldn't serialize object of type "MyUser" (found in field newUser). Firestore doesn't support JavaScript objects with custom prototypes (i.e. objects that were created via the "new" operator).

在寻找解决方案之后,我意识到我需要更改这一行:

return db.doc("users/"+user.uid).set({newUser});

对此

return db.doc('users/'+user.uid).set(JSON.parse(JSON.stringify(newUser)));

现在可以使用了。

相关问题