【发布时间】:2017-03-01 20:03:24
【问题描述】:
Link to github https://github.com/AEkman/Quiz
我正在尝试从 mysql 数据库中获取数据并使用 EJS 打印到 html 表。
这是我从 database.js 调用的函数:
this.getUsers = function (res) {
connection.acquire(function (err, con) {
con.query('SELECT * FROM user', function (err, rows, result) {
con.release();
if(err) {
console.log(err);
} else {
obj = JSON.parse(JSON.stringify(rows));
console.log(obj);
}
});
});
};
};
这是我在 app.js 中的路线
app.get('/settings', function(req, res) {
var obj = databaseFunctions.getUsers(res);
res.render('settings', {
obj:obj,
title: 'Settings',
classname: 'settings'
});
});
这是我的 EJS 代码:
<% print.forEach(function(users) { %>
<tr>
<td><%= users.mail %></td>
<td><%= users.name %></td>
<td><%= users.password %></td>
<td><%= users.groups %></td>
<td><%= users.accountLevel %></td>
</tr>
<% }); %>
如果我 console.log(obj) 我得到:
[ { mail: 'info@andreasekman.com',
name: 'test',
password: '1234',
groups: 'java2',
accountLevel: 'User' },
{ mail: 'xtironman@hotmail.com',
name: 'ace',
password: 'ace',
groups: 'java2',
accountLevel: 'User' } ]
当我尝试运行 /settings 时,我得到以下信息:
TypeError: C:\Users\Andreas\Documents\GitHub\Quiz\views\settings.ejs:15
13| <h1>Settings</h1>
14| <% include partials/template/createuser.ejs %>
>> 15| <% include partials/template/viewusers.ejs %>
16| </div><!-- row -->
17| <div class="content"></div>
18| <% include partials/template/footer.ejs %>
esc is not a function
at rethrow (C:\Users\Andreas\Documents\GitHub\Quiz\node_modules\ejs\lib\ejs.js:285:18)
at eval (eval at compile (C:\Users\Andreas\Documents\GitHub\Quiz\node_modules\ejs\lib\ejs.js:524:12), <anonymous>:85:9)
at eval (eval at compile (C:\Users\Andreas\Documents\GitHub\Quiz\node_modules\ejs\lib\ejs.js:524:12), <anonymous>:87:10)
at returnedFn (C:\Users\Andreas\Documents\GitHub\Quiz\node_modules\ejs\lib\ejs.js:555:17)
at tryHandleCache (C:\Users\Andreas\Documents\GitHub\Quiz\node_modules\ejs\lib\ejs.js:203:34)
at View.exports.renderFile [as engine] (C:\Users\Andreas\Documents\GitHub\Quiz\node_modules\ejs\lib\ejs.js:412:10)
at View.render (C:\Users\Andreas\Documents\GitHub\Quiz\node_modules\express\lib\view.js:126:8)
at tryRender (C:\Users\Andreas\Documents\GitHub\Quiz\node_modules\express\lib\application.js:639:10)
at EventEmitter.render (C:\Users\Andreas\Documents\GitHub\Quiz\node_modules\express\lib\application.js:591:3)
at ServerResponse.render (C:\Users\Andreas\Documents\GitHub\Quiz\node_modules\express\lib\response.js:960:7)
我做错了什么?
【问题讨论】:
-
Node js 纯粹是异步的,你必须在回调中编写每个结果访问,在你的情况下,数据库访问调用将返回 res ,但你没有使用它作为对象,在那里使用回调跨度>
-
这对我不起作用,我收到的唯一数据是“未定义”。