2013-08-28 2 views
1

Это, как я в настоящее время получаю данные из MongoDB:Получение данных из MongoDB/мангуста с использованием предопределенных функций

users.get(base_URL, (req, res) => { 
    UserModel.find({}, (err, docs) => { 
     res.render("Users/index", { 
      title: "All Users here", 
      user_list: docs 
     }); 
    }); 
}); 

Теперь, как вы можете видеть это экспресс-приложение. Я бы хотел, чтобы простой вызов функции, чтобы я мог получить значение из переменной docs внутри обратного вызова модели mongodb. Как это сделать, в идеале, я хочу, чтобы увидеть что-то вроде этого:

users.get(base_URL, (req, res) => { 
    res.render('<some_jade_file_here>', { 
      title: "Yes, got it right", 
      user_list: getAllUsers(); 
     }); 
}); 

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

Любая помощь будет глубоко оценена. Если вам интересно об этом синтаксисе () => {}, это просто анонимная функция в машинописи.

ответ

1

Вы не можете сделать это без обратных вызовов, но вы можете использовать библиотеку управления асинхронным потоком, такую ​​как async, чтобы помочь управлять гнездом обратных вызовов. В этом случае вы, вероятно, захотите использовать async.parallel.

С помощью этого вы можете сделать что-то вроде:

users.get(base_URL, (req, res) => { 
    var data = { 
     title: "Yes, got it right" 
    }; 
    async.parallel([ 
     (callback) => { 
      UserModel.find({}, (err, docs) { 
       data.user_list = docs; 
       callback(err); 
      }); 
     }, 
     (callback) => { 
      // Other query that populates another field in data 
     } 
    ], (err, results) => { 
     // Called after all parallel functions have called their callback 
     res.render('<some_jade_file_here>', data); 
    }); 
}); 
+0

Постараюсь это. Вернемся к вам как можно скорее. –

Смежные вопросы