首页 > 解决方案 > NodeJs MySql 获取一个结果会引发错误,但可以工作

问题描述

我不知道出了什么问题。我尝试使用数据表单 MySQL 查询用 EJS 打印一篇文章。它有效,但在终端中引发错误。

db.query('SELECT * FROM post WHERE p_id=? and p_deleted=0 LIMIT 1', [id], (err, rows) => {
        if (err) {
            throw err;
        } else {
            res.render("post_test", { post: rows[0] });
        }
    })

结果在浏览器中正确打印,但这给了我终端错误:

类型错误:C:\Users\Pitero\Desktop\test\views\post_test.ejs:2

2| <%= post.p_title %>

无法读取未定义的属性“p_title”

这个终端困扰着我......所以我也试过看看发生了什么:

else {res.render("post_test", { post: rows[0] });       
console.log(rows[0]);
console.log(typeof rows[0].p_title);
console.log(rows[0].p_title);}

并给出如下结果:

TextRow { p_id: 11, p_u_id: 0, p_title: 'POST NR.: 11', p_body: '某个值' }

细绳

邮编:11

未定义 C:\Users\Pitero\Desktop\test\app.js:91

       console.log(typeof rows[0].p_title);
                                  ^

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

有趣的是,当我删除时res.render("post_test", { post: rows[0] });根本没有错误(而console.log)。

同样,当我在 EJS 文件中使用时,post.forEach(function(post)一切正常(没有任何错误),但我认为这不是使用它的正确方法。

有什么建议么 ?

标签: mysqlnode.jsejs

解决方案


我刚刚在 EJS 文件中摆脱了这个。现在它在终端很安静。

<% if (post != null){  %>
<h6"><%= post.p_title %></h6>

<% } %>

推荐阅读