javascript - 尝试了解如何将回调合并到 Node.js/SQLITE 中

标签 javascript node.js sqlite

我对这一切都很陌生,正在努力弄清楚如何控制 Node 代码中的操作顺序。当我加载页面时,我的变量显示“未定义”,直到我再次刷新浏览器。我假设这是因为 Jade/Pug 页面是在数据库查询之前呈现的。我读过的所有内容都表明我需要使用回调来控制顺序,但我似乎无法让它工作。这是我预先屠宰的代码。

exports.count = function(req, res) {

    //Get in count
    db.all("SELECT COUNT(id) as cnt FROM tableName WHERE status='in'",
      function(err, rows){
        inCount=rows[0].cnt;
        console.log("Items In: " + inCount);
    });

    //Get out count
    db.all("SELECT COUNT(id) as cnt FROM tableName WHERE status='out'",
      function(err, rows){
        outCount=rows[0].cnt;
        console.log("Items Out: " + outCount);
    });

    //Render Count to Pug view
    res.render('count', { _incount: inCount + ' in', _outcount: outCount + ' out'});

};

这就是我试图遵循的,但它导致我的页面超时。 node.js and express passing sqlite data to one of my views

任何帮助将不胜感激,谢谢!!

最佳答案

用于管理异步控制流的模块 - 如 async - 可以帮助你。如果您需要异步介绍,可以阅读一篇博客文章 here您可能会发现有用。

例如:

exports.count = function(req, res) {

  async.series([
    function (callback) {

      //Get in count
      db.get("SELECT COUNT(id) as cnt FROM tableName WHERE status='in'", callback);
    },
    function (callback) {

      //Get out count
      db.get("SELECT COUNT(id) as cnt FROM tableName WHERE status='out'", callback);
    }
  ], function (error, results) {

    if (error) {
      // ... handle the error in an appropriate manner
    } else {
      res.render('count', { _incount: results[0].cnt + ' in', _outcount: results[1].cnt + ' out'});
    }
  }
};

此外,get 更适合您在示例中进行的查询,因为每个结果中只有一行。

关于javascript - 尝试了解如何将回调合并到 Node.js/SQLITE 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908444/

相关文章:

javascript - 无法检查空 JSON 键 : value pair

javascript - Canvas Fabric .js : how to set the height correctly?

javascript - NodeJS - 错误 : The specified procedure could not be found. bcrypt_lib.node

javascript - 获取格式为 2016-01-01T00 :00:00. 000-00:00 的日期

android - Android SQLite 中的并发问题

java - 我无法将数据插入我的数据库

javascript - 使用特定 Prop 进行连接组件测试(React/Redux)

javascript - 如何关闭手机屏幕的AOS动画?

node.js - 如果计数值返回 1,则对序列化查询进行计数并更新数据

android - 如何调用Database Helper类的Delete方法?