Как мне работать с запросами Mongodb в стеке JS MEAN узла

Я использую шаблон linnovate MEAN для создания приложения: https://github.com/linnovate/mean

С MongoDB я понимаю, как запрашивать коллекцию в базе данных и получать результаты через командную строку, например:

db.articles.find({ 'title' : 'hello world'})

В приложении MEAN область, которую я заметил для этого типа запросов, находится в файле app/controllers/articles.js:

/**
* List of Articles
*/
exports.all = function(req, res) {
    Article.find().sort('-created').populate('user', 'name username').exec(function(err, articles) {
        if (err) {
            res.render('error', {
                status: 500
            });
        } else {
            res.jsonp(articles);
        }
    });
};

Если бы я хотел добавить способ возврата другого списка с конкретным запросом, как бы я это сделал? Вот код, над которым я работаю:

exports.all = function(req, res) {
    Article.find().sort('-created').populate('user', 'name username').exec(function(err, articles) {
        if (err) {
            res.render('error', {
                status: 500
            });
        } else {
            res.jsonp(articles);
        Article.find({ 'category' : 'hello world').sort('-created').populate('user', 'name username').exec(function(err, morearticles) {
            if (err) {
                res.render('error', {
                    status: 500
                });
            } else {
                res.jsonp(morearticles);
            }
        });
        }
    });
};

person Reroute    schedule 06.11.2013    source источник


Ответы (1)


Из-за его асинхронной природы вы должны поместить свой второй запрос в else-statement вашего первого.

Пожалуйста, ознакомьтесь с этими вопросами для получения дополнительной информации:

результаты рендеринга нескольких БД/ mongoose запрашивает представление в express.js

Два запроса к базе данных в Mongoose с Express

person Matthias Holdorf    schedule 06.11.2013