Node.js: как передать вектор в функцию? - PullRequest
1 голос
/ 15 апреля 2011

Вот моя проблема.Учитывая, что я сохраняю данные в массиве:

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 (msgs):

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

Чтобы это работало, мне нужен доступ к сообщениям [9991] .Тело например.

1 Ответ

2 голосов
/ 15 апреля 2011

если вы вызываете 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]);
  }
}
...