2013-05-05 65 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) 
相關問題