node.js - Array.push,数组保持为空

标签 node.js coffeescript redis

我正在尝试从我的 redis 数据库中获取所有 hget 值。但是数组日志保持为空。你们可以看看吗?谢谢

getAllHMSets = (cb) ->
  client.keys "log:*", (err, logKeys) ->
    if not err and logKeys isnt null
      logs = new Array()
      i = 0
      while i < logKeys.length
        client.hgetall logKeys[i], (err, log) ->
          if not err and log isnt null
            logs.push log
        i++

      if logs.length is logKeys.length
        cb logs  if typeof cb is "function"

最佳答案

我认为您的代码有两个问题:

  1. 你应该用更地道的 CoffeeScript 编写它

  2. 您对 hgetall 的调用也必须使用回调,否则您的数组将永远不会被填充。

getAllHMSets = (cb) ->
  client.keys "log:*", (err, logKeys) ->
    if not err and logKeys isnt null

      logs = []

      for value in logKeys
        client.hgetall logKeys[i], (err, log) ->
          if not err and log isnt null
            logs.push log
            if logs.length is logKeys.length
              cb logs  if typeof cb is "function"            

关于node.js - Array.push,数组保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467564/

相关文章:

当鼠标在元素上时,Javascript 在间隔中执行函数

javascript - findAttribLocation 在 WebGL 中返回 -1

javascript - View 未渲染,区域与布局

amazon-web-services - 与 Amazon ElastiCache Redis 集群的 redis-cli 连接挂起

regex - Redis 键作为正则表达式?

javascript - 错误 : timers. js :234 callback. 应用(计时器,参数);

node.js - 使用 PHP/MySQL/JS 进行类似 facebook 聊天的后端服务器软件?

redis - 在redis服务器上更改时区

javascript - 为什么 visual studio 代码会添加破坏我的 nodejs 程序的导入语句?

jquery - HTTP 补丁 XmlHttpRequest 支持