如何使用_.each作为Node.js中对象的方法名?

时间:2013-05-05 00:50:44

标签: node.js underscore.js

我是Node.js下划线库的新手,这个问题让我很困惑。我想使用键值对中的值作为我之前声明的对象的第一部分,但我不断收到错误

TypeError: Object ax has no method 'push'. 

我一直在测试的代码如下。

db_insert = {
  first:    'a',
  second:   'b'
}

ax = []
ay = []
bx = []
by = []

_.each db_insert, (val, key) ->
  db.view key, key, (err, body) ->
    unless err
      body.rows.forEach (doc) ->
        currentTime = newTime doc.id
        (val + 'x').push(doc.id)
        (val + 'y').push(doc.value)

我已经尝试过了

a = []
b = []

_.each db_insert, (val, key) ->
  db.view key, key, (err, body) ->
    unless err
      body.rows.forEach (doc) ->
        currentTime = newTime doc.id
        val.push(doc.id)

但这也不起作用。 我是Node.js的新手,下划线所以这可能是一个简单的转义问题,但我觉得当它调用(val +'x')它会创建一个与之前定义的数组无关的嵌套对象,因为它还没有被初始化为数组,所以类型是未知的。但是,我可能错了。

1 个答案:

答案 0 :(得分:1)

val + 'x'会创建一个字符串,因此您无法引用先前创建的数组。我建议使用hashmap(JS对象)。

var my_arrays = {
 'ax' : [],
 'ay' : []
 // etc.
}

然后,你可以做

my_arrays[val + 'x'].push(doc.id)