2011-04-15 266 views
1

這是我的問題。鑑於我在數組中保存數據:Node.js:如何將矢量傳遞給函數?

fetch.on('message', function(msg) { 
     msg.data = ''; 
     msg.on('data', function(chunk) { 
      msg.data += chunk; 
     }); 
     msg.on('end', function() { 
      msgCache[msg.id].body = msg.data; 
     }); 
    }); 
fetch.on('end', function() { 
    console.log('Done fetching bodies!'); 
    cb(undefined, msgCache); 

    }); 

和:

fetch.on('end', function() { 
     console.log('Done fetching bodies!'); 
     cb(undefined, msgCache, msg.id); 
}); 

其中發送 「msgCache」 陣列CB()。

function(msgs) { 
    console.log(msgs); 
} 

這工作正常。但是,我不知道如何獲取函數中的msgs [msg.id],並且沒有必要傳遞數組。

有沒有一種方法可以訪問最後一個函數中的msgs [msg.id]?

由於

輸出的console.log的(消息):

{ '9991': 
    { headers: 
     { date: [Object], 
     to: [Object], 
     from: [Object], 
     subject: [Object] }, 
    body: 'test' }, 
    '9993': 
    { headers: 
     { date: [Object], 
     to: [Object], 
     from: [Object], 
     subject: [Object] }, 
    body: 'teste2' } } 

爲了這個工作,我需要訪問的MSG [9991]。體例如。

回答

2

如果調用cb(undefined, msgCache, msg.id);msg.id(在你定義目前尚不清楚),那麼你可以聲明cb功能這樣

function cb(dunnowhat, msgs, id) {...}

或者我不明白這一點。

如果沒有msg.id那麼也許for .. in幫助

function cb(dunnowhat, msgs) { 
    for (id in msgs) { 
    console.log(msgs[id]); 
    } 
} 
+0

這是行不通的。我傳遞了很多信息,不僅僅是一個。在2條消息的情況下,我編輯了帶有「消息」結果的問題。 – donald 2011-04-15 08:44:22

+0

仍然沒有得到它,但已經更新了我的回答 – Emmerman 2011-04-15 08:49:20

+0

當我打電話給cb()時,我沒有「msg.id」。我更新了代碼。 – donald 2011-04-15 08:50:29