mysql - 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)
一切正常(没有任何错误),但我认为这不是使用它的正确方法。
有什么建议么 ?
解决方案
我刚刚在 EJS 文件中摆脱了这个。现在它在终端很安静。
<% if (post != null){ %>
<h6"><%= post.p_title %></h6>
<% } %>
推荐阅读
- javascript - 需要帮助将回调转换为 Promise
- c# - 如何在使用 Linq 的特定 Capture.Index 之后从 MatchCollection 中获取下一个匹配项
- sql - ROUNDDOWN TIME, Power Bi
- for-loop - 如何使用 Dart 从 for 循环中返回值
- sql - 以降序和随机顺序计数 (*)
- java - 如何在同一台mac上处理多个版本的JDK
- c++ - Visual Studio 2019 不想为 LIB 版本生成 ASM 文件,我做错了什么?
- netsuite - 根据模板的 NetSuite 自定义字段
- javascript - 对象中的箭头函数和简单函数行为
- javascript - 正则表达式删除数字以外的字符并仅在 Angular 6 中允许单个小数点