【问题标题】:fetch data from multiple table by sending only one request通过仅发送一个请求从多个表中获取数据
【发布时间】:2012-02-29 16:00:22
【问题描述】:

我使用 node.js 进行服务器端开发,使用backbone.js 进行客户端开发。我想通过仅向 node.js 发送一个请求来从多个表(超过 3 个)中获取数据。但由于 node.js 的异步执行,我无法将所有结果相互合并。我已经这样做了,但是它向节点 js 发送了很多获取请求以从所有表中获取数据,并且由于这些我的网站的性能变得更慢。如果有人有任何想法,请帮助我。

【问题讨论】:

  • 我同意。 Node.js 问题似乎比我回答的 ASP.NET MVC 问题更多。

标签: node.js backbone.js


【解决方案1】:

我将创建一个方法来汇总每个请求的结果并将响应发回。基本上,您的三个异步数据库调用中的每一个都会将它们的数据传递给相同的方法。该方法将检查它是否拥有完成请求所需的所有数据,如果有,则发送响应。

这是一个伪代码示例:

function handleRequest(req, res) {
        var results = {};

        db.getUsers(function(data) {
                aggregate('users', data);
        });

        db.getPosts(function(data) {
                aggregate('posts', data);
        });

        db.getComments(function(data) {
                aggregate('comments', data);
        });

        function aggregate(name, data) {
                results[name] = data;
                if(results.users && results.posts && results.comments) {
                        res.send(results);
                }
        }
}

这大大简化了,您当然还应该检查数据库调用的错误和超时,但这将允许您在发送数据之前等待所有异步命令完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 2019-12-11
    • 1970-01-01
    相关资源
    最近更新 更多