【问题标题】:When returning a template to render with a message, ejs wont add it to html返回模板以呈现消息时,ejs不会将其添加到html
【发布时间】:2021-05-20 23:51:48
【问题描述】:

我不确定如何措辞标题,请根据需要进行编辑。 我遇到的问题是在我的服务器代码中进行数据库查询以确定帐户名称是否是骗子,如果是模板则返回一条消息:

con.query('SELECT * FROM Users WHERE username = ?', [username], async (err, results) => {
        if (err) {
            return res.render("register.ejs", {
                message: "Error"
            })
        }
        if (results.length > 0) {
            return res.render("register.ejs", {
                message: "Username taken"
           })
        }
})

然后,此消息将被“添加”到我的 ejs 文件中的 html 中,以便用户可以看到它已被占用。我似乎无法让它工作。 Ejs 文件:

 <% if (message) { %>
     <h3><%= message %></h3>
 <% } %>

此外,代码本身确实有效,因为网站不允许我添加重复用户,消息不会显示。 编辑:实际错误似乎是 ejs 文件上的“消息未定义”。

【问题讨论】:

    标签: javascript node.js express ejs


    【解决方案1】:

    很遗憾,我无法确定您遇到的问题是什么。当我尝试使用您提供的相同渲染 sn-ps 设置一个简单的 Express 应用程序时,它按预期工作。

    因此,我的猜测是问题不是由您提供的代码 sn-ps 引起的。由于无法查看您正在执行的应用程序的其余代码,我只能建议您在调查中查看一些内容:

    • Express 应用程序是否正确配置为使用 EJS 作为view engine
    • 您的register.ejs 模板是否使用客户端JavaScript 来更改用户界面?如果是这样,您是否可以尝试暂时删除 JavaScript 以查看是否可以解决问题?
    • 如果您从 register.ejs 模板中删除所有内容,但您提供的 EJS 代码 sn-p 是否仍然存在?
    • 代码是否有可能没有进入您的if 块?例如,err 是否有可能评估为 falseresult.length 等于 0?

    下面是我在测试中使用的app.js 文件:

    const express = require('express');
    const app = express();
    
    app.set('view engine', 'ejs');
    
    app.get('/', (req, res) => {
        return res.render("index.ejs", {
            message: "Hello"
       })
    });
    
    app.listen(4000, () => console.log('Example app listening on port 4000!'));
    

    下面是我在测试中使用的index.ejs 文件:

    <% if (message) { %>
        <h3><%= message %></h3>
    <% } %>
    

    我希望这会有所帮助。如果您能够解决您的问题,请告诉我们。

    【讨论】:

    • 我得到的错误只是 .ejs 文件中不存在该消息。而且您的代码基本上与我的代码完全相同,所以这很奇怪。我可以问一下,您的 ejs 文件是否会在查看时返回“hello”,现在将其放入 html 中?我的问题的一个例子可以在monkbot.net/register查看
    • 是的,我的 EJS 文件返回时在网页上的

      标记中显示“Hello”。如果你删除你的两个“if”块,而只是返回带有任意消息的 EJS 模板,它会起作用吗?

    • 它现在看起来像这样

      ,但仍然声明消息未定义。
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 2014-04-14
    • 2015-06-18
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多