我是“nodejs”世界的新手。所以想探索各种技术,涉及的框架我正在构建一个由redis支持的简单的用户帖子系统(用户发布其他人看到帖子的内容)。我使用大多数教程推荐的express框架。但是我在从redis服务器获取数据方面遇到一些困难,我需要从redis服务器执行3次查询来显示帖子。在这种情况下,必须在每次redis调用后使用所需的回调。所以我想使用streamline.js但即使在调用之前使用 npm install streamline -g
和 require('streamline').register();
后,我也无法让它工作
var keys=['comments','timestamp','id'];
var posts=[];
for(var key in keys){
var post=client.sort("posts",'by','nosort',"get","POST:*->"+keys[key],_);
posts.push(post);
}
我收到错误ReferenceError:_未定义。
请为我指出正确的方向或指出我可能错过的任何资源。
最佳答案
require('streamline').register()
调用应该位于启动应用程序的文件中(带有 .js
扩展名)。精简代码应该位于另一个具有 ._js
扩展名的文件中,这是主脚本所必需的。
Streamline 仅允许您在主脚本的顶层进行异步调用(使用 _
参数进行调用)。在这里,您的精简代码位于主脚本所需的模块中。所以你需要将它放在一个函数中。像这样的东西:
exports.myFunction = function(_) {
var keys=['comments','timestamp','id'];
var posts=[];
for(var key in keys){
var post=client.sort("posts",'by','nosort',"get","POST:*->"+keys[key],_);
posts.push(post);
}
}
这是因为 require
是同步的。因此,您不能将另一个脚本所需的异步代码放在一个脚本的顶层。
关于node.js - 将 StreamlineJS 与 NodeJS Express 框架结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16432468/