2012-07-30 2 views
0

У меня есть функция Map в MongoDB, которую я позже использую для уменьшения. Я использую коллекцию, в которой есть куча пользователей, и пользователи владеют некоторыми каналами. Тем не менее, есть пользователи, у которых нет каналов, а функция Map/Reduce вызывает ошибку в моем скрипте.Как продолжить цикл в функции Map (/ Reduce)?

 map = Code("function() {" 
       " if(!this.channels) continue;" 
       " this.channels.forEach(function(z) {" 
       "  emit(z, 1);" 
       " });" 
       "}") 

Когда я использую вернуться вместо продолжать, чтобы выйти из функции она работает безупречно, за исключением, что я не хочу, чтобы закончить цикл. Есть ли разумный способ обойти это?

Спасибо за ваш совет и лучший widsom.

ответ

0

Если вы return от map, он возвращается только от map для этого документа. Карты для других документов будут выполнены независимо от этого.

Я предлагаю переписывать map к этой форме

function() { 
    if(this.channels) { 
    this.channels.forEach(function(z) { 
     emit(z, 1); 
    }); 
    } 
} 

Я думаю, эта форма является более ясным. Он выдаст что-то для пользователей, у которых есть каналы, и пропустите те, у которых их нет.