我需要从下面的查询中获取 foo
:
exports.get = function(id, cb) {
sql = 'SELECT `sidebar`, `test` FROM users WHERE `id` = "' + id + '"';
con.query(sql, function(err, foo) {
if (err) { return cb(err) }
else { return cb(foo) };
});
}
然后像这样在我的 app.js 上渲染 foo
:
app.get('/dashboard', ensureLoggedIn('/login'),
function(req, res) {
const id = req.session.passport.user;
const foo = db.defaults.set(id) //db.defaults.set calls the query
console.log(foo); //prints undefined
res.render('dashboard', { foo:foo });
});
这是我最近的尝试:
app.get('/dashboard', ensureLoggedIn('/login'),
function(req, res, next) {
const id = req.session.passport.user;
db.defaults.get(id, function(err, foo) {
if (err) return next(err);
res.render('dashboard', {foo:foo});
//also tried:
//return res.render('dashboard', {foo:foo});
});
上面的尝试根本没有呈现页面。 html 加载为:
[object object]
我错过了什么?
最佳答案
您正在尝试异步呈现服务器端模板(在获取数据之后),但您不能这样做。
您可以做的是将模板同步发送到客户端,然后公开端点以获取这些数据并相应地修改页面(在客户端)。
app.get('/dashboard', ensureLoggedIn('/login'), function(req, res) {
res.render('dashboard');
});
app.get('/fetchdata', function (req, res, next) {
const id = req.session.passport.user;
db.defaults.get(id, function(err, foo) {
if (err) return next(err);
res.send(foo);
});
})
关于javascript - 如何使用回调从带有 node.js 和 ejs 的 mysql 中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54520192/