Javascript expressjs中用于渲染把手的Res.render页面不工作

Javascript expressjs中用于渲染把手的Res.render页面不工作,javascript,node.js,express,http,handlebars.js,Javascript,Node.js,Express,Http,Handlebars.js,因此,在我的客户端,我有以下javascript search_button.addEventListener("click", event => { fetch("/api/specific-customer/" + search_input.value).then(res => { console.log(res.status) }) }) 然后在我的服务器端,我有以下端点 router.get("

因此,在我的客户端,我有以下javascript

search_button.addEventListener("click", event => {
    fetch("/api/specific-customer/" + search_input.value).then(res => {
        console.log(res.status)
    })
})
然后在我的服务器端,我有以下端点

router.get("/specific-customer/:name", (req, res) => {
    let target_user = req.params.name;
    let sqlQuery = "SELECT * FROM Customers WHERE customer_name = ?";
    mysql.pool.query(sqlQuery, [target_user], (err, result) => {
        if (err) {
            console.log(err);
        }
        else {
            console.log(result)
            let data = {
                customer: result
            }
            res.render("index", data)
        }
    })
});

res.render根本不呈现索引页,它只是什么都不做。我目前在索引页上,但我想用不同的数据重新呈现它,而不是默认的SELECT*FROM Products。有人有什么建议吗?

如果您的SQL查询没有返回任何错误,那么这里有两种方法可以实现您想要的结果

第一种方法
  • 不使用“搜索时提取”按钮单击事件
  • 只需重新定向
  • 名称
    传递到URL
search_按钮。addEventListener(“单击”,事件=>{
window.location.replace(“/api/specific customer/”+search\u input.value);
})
第二种方法
  • 如果没有
    target\u user
    ,这意味着我们试图在没有任何数据的情况下呈现索引页面,因此我们返回
    res.render('index')

  • 在索引页面上,单击搜索按钮时,我们使用
    fetch
    对同一端点
    (“/specific customer/:name”)
    进行API调用,但这次使用
    target_name
    作为URL参数

  • 现在,因为我们正在传递
    目标\u名称
    ,所以它不再
    res.render()
    ,而是将SQL查询的结果作为JSON返回

  • 最后,使用获得的数据填充页面

router.get(“/specific customer/:name)”,(req,res)=>{
让target_user=req.params.name;
如果(!目标用户){
返回res.render('索引')
}
让sqlQuery=“从customer_name=?”的客户中选择*;
query(sqlQuery,[target\u user],(err,result)=>{
如果(错误){
控制台日志(err);
res.json(err)
}否则{
console.log(结果)
让数据={
顾客:结果如何
}
res.json(数据)
}
})
});

如果未指定渲染引擎,则使用扩展名为的文件名。类似于res.render(“index.hbs”,data)。阅读本文可以配置用于handlebar模板引擎的express应用程序。获取引擎也可以用于获取动态模板(参考:)。所以问题不在于
fetch
它在服务器上。没错,但这似乎是一个服务器端渲染的应用程序,所以当您可以通过替换窗口位置URL发出请求时,为什么要使用
fetch
发出get请求呢。我不确定我是否完全理解您的观点@muhammadsaquibshaikh假设您想在页面中加载一些html代码,因为您不想重新加载,而不是从服务器中提取代码并将其注入。在这种情况下,fetch可以用来获取动态内容。我认为他没有正确配置他的express应用程序,请他阅读本文