1

我是 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') 时,它会创建一个与先前定义的数组无关的嵌套对象,因此,由于它还没有被初始化为数组,所以类型是未知的。但是,我可能是错的。

4

1 回答 1

1

val + 'x'创建一个字符串,因此您无法引用之前创建的那些数组。我建议为此使用哈希图(JS 对象)。

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

然后,你可以做

my_arrays[val + 'x'].push(doc.id)
于 2013-05-05T00:55:26.787 回答