当前位置: 首页 > 知识库问答 >
问题:

如何使用app.post将一个常量导出到另一个常量之外? Express Javascript

刘永望
2023-03-14

我有一个文件SignupResponse.js。

const foundRegisterUser = function(err, foundUser){
        if(!err){
            console.log("Não tivemos erros")
            if(!foundUser){
                if(req.body.password == req.body.passwordConfirmation){ 
                    User.register({username: req.body.email}, req.body.password, function(err, user){
                        if (err){/ 
                            console.log(err);
                        } else { 
                            console.log("Success")
                            res.render("welcome")
                        } 
                    })
                } else { 
                    res.render("registerFailure",{msg0:MSG_INVALID_PASSWORD, msg1:"", msg2:""})
                }
            } else { 
                res.render("registerFailure",{msg0:MSG_INVALID_USER, msg1:"", msg2:"" })
            }
        } else {
            res.render("registerFailure",{msg0:MSG_ERROR_REGISTER, msg1:"", msg2:""})
        }   
    }
const signupresponse = (req, res) => {
    Register.findOne({username: req.body.email}, function(err, foundUser){ 
        if(!err){ /
            if(!foundUser){
                console.log("Usuário não encontrado")
                res.render("registerFailure",{msg0:MSG_NOT_FOUND_REGISTER_0, msg1:MSG_NOT_FOUND_REGISTER_1, msg2:MSG_NOT_FOUND_REGISTER_2 })
                }
            else { 
                User.findOne({username: req.body.email}, 
                    foundRegisterUser(err, foundUser)
                    )
            } 
        } else {
            res.render("registerFailure",{msg0:MSG_ERROR_REGISTER, msg1:"", msg2:"" })
        }
    })
}

module.exports = signupresponse

我尝试导出到app.js

const signupResponse = require("./funcoes/signupResponse")
app.post("/signup", signupResponse)

This return referenceError:res未定义,但当我将所有内容放入signupResponse并再次导出时,它工作得很好:

const signupresponse = (req, res) => {
    Register.findOne({username: req.body.email}, function(err, foundUser){ 
        if(!err){ 
            if(!foundUser){
                console.log("Usuário não encontrado")
                res.render("registerFailure",{msg0:MSG_NOT_FOUND_REGISTER_0, msg1:MSG_NOT_FOUND_REGISTER_1, msg2:MSG_NOT_FOUND_REGISTER_2 })
                }
            else { 
                User.findOne({username: req.body.email}, function(err, foundUser) {
                    if(!err){
                        console.log("Não tivemos erros")
                        if(!foundUser){
                            if(req.body.password == req.body.passwordConfirmation){ 
                                User.register({username: req.body.email}, req.body.password, function(err, user){
                                    if (err){/ 
                                        console.log(err);
                                    } else { 
                                        console.log("Success")
                                        res.render("welcome")
                                    } 
                                })
                            } else { 
                                res.render("registerFailure",{msg0:MSG_INVALID_PASSWORD, msg1:"", msg2:""})
                            }
                        } else { 
                            res.render("registerFailure",{msg0:MSG_INVALID_USER, msg1:"", msg2:"" })
                        }
                    } else {
                        res.render("registerFailure",{msg0:MSG_ERROR_REGISTER, msg1:"", msg2:""})
                    } 
                })
            } 
        } else {
            res.render("registerFailure",{msg0:MSG_ERROR_REGISTER, msg1:"", msg2:"" })
        }
    })
}

module.exports = signupresponse

该应用程序运行良好,没有返回错误。 我不知道如何使用module.exports当有很多功能要导出的时候。 我如何导出这个signupResponse并在其中放入另一个函数而不出错? 谢啦!

共有1个答案

季炯
2023-03-14

这不是export的问题,而是“res”变量的作用域问题。

在第一个代码示例中,出现此错误是因为您试图访问FoundRegisterUser内部的res对象,但此函数不知道res对象。 您在其他函数signupresponse定义了一个res对象,而res对象仅存在于该函数中。 FoundRegisterUser不了解它。

它在第二个示例中起作用,因为在这种情况下不存在res的作用域问题:所有内容都在同一个函数中,然后您的回调可以访问res对象。

使第一个示例工作的一种方法是将FoundRegisterUser的定义放在SignupResponse内,如下所示:

const signupresponse = (req, res) => {
    const foundRegisterUser = function(err, foundUser){ ... };
    Register.findOne({username: req.body.email}, function(err, foundUser){...

它不会是最漂亮的,也会给结构改进留出很多空间,但它应该是可行的。

 类似资料:
  • 本文向大家介绍如何判断一个常量是废弃常量 ?相关面试题,主要包含被问及如何判断一个常量是废弃常量 ?时的应答技巧和注意事项,需要的朋友参考一下 运行时常量池主要回收的是废弃的常量。那么,我们如何判断一个常量是废弃常量呢? 假如在常量池中存在字符串 "abc",如果当前没有任何 String 对象引用该字符串常量的话,就说明常量 "abc" 就是废弃常量,如果这时发生内存回收的话而且有必要的话,"a

  • 问题内容: 我有两个 newAccessLevels.java ,它有两个按钮“ Level 1”,“ Level 2”和 newAccessPanel.java。 我需要获取用户选择“ 1或2”的级别,以便可以在标题中显示它。 accessPanel.java, 例如访问级别1,访问级别2。如何完成此操作。下面是示例代码,因此,如果单击级别1,则将打开标题为* ACCESS LEVEL 1 的n

  • 着色器语言和C语言、javascript语言一样可以通过关键字const声明一个常量。 着色器语言和其它语言一样,声明一个变量,可以重新赋值,如果通过关键字const声明一个常量,顾名思义是常量,在代码中是不可以更改的。 // 着色器语言定义一个整形常量 const int count = 10; // 定义一个浮点数常量10.0 const float count = 10.0; // 定义一个

  • 让我们在一个示例中展示它,其中我们有一个包含主数据的数据类,某种指向主数据的索引,我们还需要公开索引的版本。 这是错误的,因为用户可以轻松修改数据: 这样做的原因是,Data::getIndex应该返回的正确类型是: 但是,您可以猜测,当您尝试以这种方式编写方法以“将非常量变量转换为常量变量”时会发生什么: 据我所知,C没有解决这个问题的好方法。显然,我可以创建新的向量,从索引中复制值并返回它,但

  • 问题内容: 我有一个JSP文件为 jsp 1.jsp ,另一个JSP文件为 jsp 2.jsp 我已经包括 JSP 2.jsp 在 JSP 1.jsp页面 使用 现在,我需要某些元素上的click事件。在那件事上,我想将一个字符串变量传递给包含的jsp。 假设我有一个列表,单击它后,我想将该列表的名称转移到另一个JSP, 在另一个JSP中,我试图使用该字符串执行某些任务。 我在没有任何servle

  • 我在class中定义了一个变量。它可以很好地执行Account类中定义的提款功能。但是,我希望访问Sav\u acct类中存在的函数interest中的变量值。它将收回的值取为0。如何使用兴趣函数中的函数中的函数的值,以便执行正确的数学运算? 导入java。util。扫描仪; 类别帐户{ 双重撤回; } 作废取款(){ 扫描仪sc=新扫描仪(系统英寸); 系统出来println(“您想提取多少?”

  • 我们看到在GCC 11.3和Visual Studio 2022中成功编译的C代码在GCC 12.1中存在问题。该代码位于编译器资源管理器:https://godbolt.org/z/6PYEcsd1h(感谢@NathanPierson对其进行了一些简化。) 基本上,模板类决定尝试在const函数中调用非const基类函数,即使const重载可用。这似乎是某种编译器错误,但可能是一些奇怪的新C规则

  • 问题内容: 我想从一个视图控制器导航到另一个。如何将以下Objective-C代码转换为Swift? 问题答案: 为第二个视图控制器创建一个swift文件(SecondViewController.swift),并在适当的函数中键入以下内容: 迅捷2+ 斯威夫特4