使用预定义的函数从mongodb/mongoose获取数据

Getting data from mongodb/mongoose using predefined functions

本文关键字:mongoose 获取 数据 mongodb 预定义 函数      更新时间:2023-09-26

这就是我目前从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();
        });
});

理想情况下,我只想调用一个函数。我该怎么做呢?因为必须将render放在mongodb调用中是个问题,因为你可能想从数据库中查询很多东西,而它甚至可能不是一个数据库。我有点挣扎,因为我不太习惯回电话。

如有任何帮助,我们将不胜感激。如果您想知道这个语法() => {},那只是typescript中的一个匿名函数。

没有回调就无法实现,但可以使用类似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);
    });
});