如何在节点JS MEAN堆栈中使用Mongodb查询

时间:2013-11-06 07:43:51

标签: node.js mongodb angularjs express mongoose

我使用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);
            }
        });
        }
    });
};

1 个答案:

答案 0 :(得分:0)

由于其异步性质,您必须将第二个查询放在第一个查询的else-statement内。

请参阅此问题以获取更多信息:

rendering results of multiple DB/mongoose queries to a view in express.js

Two database queries in Mongoose with Express