【问题标题】:Getting data from mongodb/mongoose using predefined functions使用预定义函数从 mongodb/mongoose 获取数据
【发布时间】:2013-08-31 14:01:31
【问题描述】:

这就是我目前从 mongodb 获取数据的方式:

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

现在,您可以看到这是一个快速应用程序。我想要的是简单地调用一个函数,以便我可以从 mongodb 模型回调中的 docs 变量中获取值。我该怎么做,理想情况下,我想看到这样的东西:

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

理想情况下,我只想调用一个函数。我该怎么做,因为必须将渲染放在 mongodb 调用中是一个问题,因为您可能想从数据库中查询一堆东西,它甚至可能不仅仅是一个数据库。我有点挣扎,因为我不习惯回调。

任何帮助将不胜感激。如果您想知道 () =&gt; {} 这个语法,那只是打字稿中的一个匿名函数。

【问题讨论】:

    标签: javascript mongodb express mongoose typescript


    【解决方案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);
        });
    });
    

    【讨论】:

    • 我会试试这个。会尽快回复您。
    猜你喜欢
    • 2012-02-12
    • 2013-11-06
    • 2011-11-20
    • 2019-07-17
    • 2020-01-13
    • 1970-01-01
    • 2012-08-09
    • 2012-06-04
    相关资源
    最近更新 更多