2011-04-15 268 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