试图了解如何将回调合并到Node.js/SQLITE中
Trying to understand how to incorporate a callback into Node.js/SQLITE
我对这一切都很陌生,我正在努力弄清楚如何控制节点代码中的操作顺序。当我加载页面时,变量显示为"未定义",直到我第二次刷新浏览器。我假设这是因为Jade/Pug页面在db查询之前呈现。我读到的所有内容都表明,我需要使用回调来控制顺序,但我似乎无法让它工作。这是我预先设定的代码。
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和表达传递sqlite数据到我的视图之一
任何帮助将是最感激的,谢谢!
管理异步控制流的模块(如async)可以帮助您实现这一点。如果你需要异步的介绍,这里有一篇博客文章,你可能会觉得有用。
例如: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
将更适合您在示例中进行的查询,因为每个结果中只有一行。
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 如何使用 node.js 比较两个 json 数组
- Node.js's Buffer.writeFloatBE in Javascript
- node.js:setInterval()正在跳过调用
- 如何处理node.js节点mongodb中的连接和查询队列
- Node.js正在更改应用程序以使用集群模块
- 如何使用Node.js最有效地解析网页
- 在openshift node js应用程序中获取请求
- 正在删除node.js中已验证的网站
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 在索引.html和应用.js [node.js] 之间共享变量
- Node.js中的JavaScript原型对象效率
- node.js请求数据事件未在CORS ajax调用中触发
- 使用node.js制作网站
- 使用node.js服务器中的evernote api获取note内容
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- 使用CI和CodeDeploy对node.js应用程序进行连续部署
- 在Node.js中上传和检索图像
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 如何使用 Node JS 获取 JSON 嵌套数组值