我是'nodejs'领域的新手。因此,想要探索各种技术,涉及的框架,我正在建立一个由redis支持的简单的用户发布系统(用户向其他人发布一些其他人看到的帖子)。大多数教程。但是我在从Redis服务器获取数据时遇到了一些困难,我需要从Redis服务器进行3次查询才能显示帖子。在这种情况下,每次调用Redis后都必须使用嵌套的回调。所以我想使用流线型.js简化了回调。但是即使在调用前使用npm install streamline -grequire('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/

10-12 03:26