Javascript 如何在本地测试firebase身份验证触发器?

Javascript 如何在本地测试firebase身份验证触发器?,javascript,firebase,firebase-authentication,google-cloud-functions,firebase-cli,Javascript,Firebase,Firebase Authentication,Google Cloud Functions,Firebase Cli,这是我的密码 const functions = require('firebase-functions'); exports.doSomething = functions.auth.user().onCreate(function(user) { const userJsonString = JSON.stringify(user.toJSON); // doing some network stuff in here the important part is I nee

这是我的密码

const functions = require('firebase-functions');

exports.doSomething = functions.auth.user().onCreate(function(user) {
    const userJsonString = JSON.stringify(user.toJSON);
    // doing some network stuff in here the important part is I need a properly working user Object (needs a toJSON function)
});
但是如何触发onCreate()函数呢?我已经通过使用以下命令
firebase函数了解了如何使用firebase cli:shell
,但是当我刚刚触发这样的函数时(如上所述):

它抛出一个错误,因为未在此对象上定义
toJSON

我也读过,但如何实现“遵循数据格式”?这是否意味着我必须自己实现自己的类和每个函数(可能还需要猜测
toJSON()
函数之类的实现)


正如您可能意识到的那样,我对javascript完全不熟悉,只需要在云函数中使用它,因为这部分仅适用于javascript。

由于
onCreate
交付了一个对象,您是否尝试过创建一个对象并将其发送给doSomething而不是普通的JS对象?您必须自己实现它的方法,或者至少实现您打算调用的方法。您所说的
onCreate
是什么意思?创建时是否有顶级函数
onCreate
?如果您的意思是
admin.auth().createUser({username:“username1”,…})
我尝试使用此函数创建用户对象(或者它甚至可能直接触发我的云函数)但问题是firebase cli找不到项目id并抛出此错误
UnhandledPromisejectionWarning:error:无法确定项目id:发出请求时出错:getaddrinfo ENOTFOUND metadata.google.internal。错误代码:enotfind
我的意思是,由于您显示的
onCreate
回调函数接受UserRecord对象,因此您应该尝试使用您构建的测试函数(而不是您现在使用的普通JS对象)调用您的测试函数。所以,
doSomething(userRecordYouImplemented)
。是的,UserRecord通常由firebase生成。每次新用户通过应用程序firebase注册时,都会触发该函数,并将UserRecord(firebase内部创建的)传递给该函数。为了测试它,我想以某种方式创建一个与firebase相同的UserRecord,因为如果在生产中向其中传递完全不同的UserRecord,那么这个测试就没有多大意义。您当然可以构建一个满足您自己需要的UserRecord对象,并将其传递给您自己。这就是CLI测试的工作方式—您可以传递自己想要测试的输入。这在本手册中有介绍。由您来确保对象具有您想要使用的所有属性和方法。
doSomething({uid : "akdfkaf", username : "This is a username"})