javascript - 如何使用回调从带有 node.js 和 ejs 的 mysql 中获取数据?

标签 javascript mysql node.js express ejs

我需要从下面的查询中获取 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/

相关文章:

javascript - 如何将 javascript 脚本中的倒数计时器 document.getElementById() 多次写入嵌套在 php for 循环中的 html 段落中?

javascript - 使用对象引用调用 setinterval

php - 未定义索引 : collation laravel 5. 1 个 mysql 连接

php - 我将如何解析这段 PHP 以允许通过 PHP 从 MySQL 接收/输出数据?

javascript - 预加载图像和添加类

javascript - fitBounds 缩放以包含所有标记

javascript - 具有多个系列的 Highcharts 异步服务器加载

node.js - 流读取(0)指令

node.js - Mongoose 使用 presave 中间件推送到数组

javascript - nodejs vs javascript(两个不同的答案)