Q:

Как передать переменную в render?

Ребят, помогите разобраться, я с node js совсем недавно, да и с js тоже. Программировал на PHP, но тут совсем другое и все въехать не могу в работу node js.
На странице нужно сделать две выборки, вывести разделы (категории) и сами записи из mongodb
Делаю так
exports.get = function(req, res, next) {

// Выборка с коллекции catalogs
Catalog.get(function(err, catalog) {
    if(err) return next(err);

    //console.log(catalog) // массив записей

    var catalog = catalog;
});

// Выборка с коллекции news
News.get(function(err, post) {
    if(err) return next(err);

    //console.log(post) // массив записей

    var post = post;
});

res.render('home', {
    catalogs: catalog,
    posts: post
});

};

ReferenceError: catalogs is not
defined ReferenceError: posts is not
defined

Как передать содержимое в render?

A:

В javascript используется функциональная область видимости (возможно некорректно назвал, но пофиг))) ). То есть, переменная объявленная в функции в ней и останется и "снаружи" ее не увидеть. Именно поэтому
ReferenceError: catalogs is not defined ReferenceError: posts is not defined

Почему именно на переменные catalogs и posts ругается непонятно. Должно было на catalog и post выругаться. Покажите весь стек из консоли. Для решения вашей задачи подойдет эта функция из модуля async. Реализация:
exports.get = function (req, res, next) {
    async.parallel([
        Catalog.get,
        News.get
    ], function (err, result) {
        if (err) return next(err);
        res.render('home', {
            catalogs: result.catalog,
            posts: result.post
        });
    });
}

