node.js - 将 StreamlineJS 与 NodeJS Express 框架结合使用

标签 node.js express

我是“nodejs”世界的新手。所以想探索各种技术,涉及的框架我正在构建一个由redis支持的简单的用户帖子系统(用户发布其他人看到帖子的内容)。我使用大多数教程推荐的express框架。但是我在从redis服务器获取数据方面遇到一些困难,我需要从redis服务器执行3次查询来显示帖子。在这种情况下,必须在每次redis调用后使用所需的回调。所以我想使用streamline.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/

相关文章:

mysql - 如何使用nodejs和mysql插入多个对象?

node.js - 如何呈现子文件夹中的 HTML 文件?

javascript - NodeJS 在 4 或 5 小时后变慢

node.js - 通过 aws ses 在 node.js 中发送带有附件的邮件

node.js - 通过 HTTPS 运行 nodejs 应用程序

javascript - 一个对象怎么可能是不可修改的呢?

javascript - ng --version 显示 Angular 不支持当前版本的 Node (16.8.0)

node.js - 没有为 channel 注册的处理程序 - Electron IPC 处理/调用

express - 突变上的未定义参数,使用 apollo-server

node.js - 更新 Azure 中的 Node 应用程序