Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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
Javascript Express JS:在我的类中调用路由方法_Javascript_Mongodb_Typescript_Express_Mern - Fatal编程技术网

Javascript Express JS:在我的类中调用路由方法

Javascript Express JS:在我的类中调用路由方法,javascript,mongodb,typescript,express,mern,Javascript,Mongodb,Typescript,Express,Mern,我正在用Typescript创建一个MERN应用程序 在我的课堂上,我对这个有一些问题 使用此代码段: router.post("/create", user.createNewUser); router.post("/create", (req: Request, res: Response, next: NextFunction) => { try { user.createNewUser(req, res, next)

我正在用Typescript创建一个MERN应用程序

在我的课堂上,我对这个有一些问题

使用此代码段:

router.post("/create", user.createNewUser);
router.post("/create", (req: Request, res: Response, next: NextFunction) => {
    try {
        user.createNewUser(req, res, next);
    } catch (error) {
        res.json(error);
    }
});
无法在函数createNewUser中调用类user的另一个方法

如果我使用这个片段:

router.post("/create", user.createNewUser);
router.post("/create", (req: Request, res: Response, next: NextFunction) => {
    try {
        user.createNewUser(req, res, next);
    } catch (error) {
        res.json(error);
    }
});
它工作正常

这是我的职责:

createNewUser(req: Request, res: Response, next: NextFunction) {
    try {
        const { password, username, email, id } = req.body;
        const payload: object = { /* HERE MY JSON */ };
        schema.create(payload, async(err: any, result: any) => {
            const isSended = await this.sendRegistrationEmail(email);
            if (err) throw err;
            if (isSended) {
                res.status(200).json(result);
            } else {
                res.status(500).json('error');
            }
        });

    } catch (error) {
        res.status(500).send(error);
    }
};
错误是:

TypeError:无法读取未定义的属性“sendRegistrationEmail”


我想知道为什么第一个解决方案不起作用,而第二个解决方案起作用。

这个关键字很棘手。基本上问题是当你这样做的时候

router.post("/create", user.createNewUser);
您只传递
createNewUser
函数的值,而不是传递整个用户。由于函数现在只是一个浮点值,并且没有附加到
用户
对象,因此
的值变得未定义

解决办法是

router.post("/create", (...args) => user.createNewUser(...args));


这个
关键字很棘手。基本上问题是当你这样做的时候

router.post("/create", user.createNewUser);
您只传递
createNewUser
函数的值,而不是传递整个用户。由于函数现在只是一个浮点值,并且没有附加到
用户
对象,因此
的值变得未定义

解决办法是

router.post("/create", (...args) => user.createNewUser(...args));


非常感谢:)非常感谢:)