2013-05-05 29 views
1

我对Node.js的下划线库很陌生,这个问题一直困扰着我。我想在一个键值对的,我早先声明的对象的第一部分使用的价值,但我不断收到错误如何使用_.each作为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

val + 'x'创建一个字符串,所以你不能引用你以前创建的数组。我会建议使用hashmap(JS对象)。

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

然后,你可以做

my_arrays[val + 'x'].push(doc.id) 
相关问题