大型数据集/响应将服务器挂起休息服务(使用node.js JayData OData Server)

时间:2013-09-27 09:48:02

标签: node.js express odata jaydata

当我们使用node.js和MongoDB / Express构建数据提要REST服务时,当查询结果很小时,它可以很好地工作。但是当客户端查询大型数据集时,它将挂起服务器,例如1m行(已经使用gzip进行压缩)。这是由node.js单线程设计引起的吗?

我想咨询一下处理此问题的任何想法。

欢迎任何评论:)

以下是有关服务的代码(使用JayData OData服务器模块)

app.use('/d.svc', $data.ODataServer({
    type: TYPE,
    CORS: true,
    database: 'odata',
    responseLimit: -1,
    checkPermission: function (access, user, entitySets, callback) {
        logger.info('Check Access Permission for User');// + JSON.stringify(user));
        if (access & $data.Access.Create) {
            if (user == 'admin') callback.success();
            else callback.error('Auth failed');
        } else callback.success();
    },
    provider: {
        name: 'mongoDB',
        databaseName: 'odata',
        address: settings.host,
        port: settings.port,
        username: USER,
        password: PASSWORD
    }
}));

非常感谢你。

路。

1 个答案:

答案 0 :(得分:0)

您绝不应在一个查询中传输此数量的数据。想象一下,你必须将结果保存在客户端的内存中。无论您使用何种技术,建议使用分页下载。在JayData的情况下,您可以基于此博客帖子 - Synchronized Online/Offline data applications, part 2: Syncing large tables and tables with foreign relations

来实现它