我正在从Neo4j
服务器查询node.js
数据库,有些查询有时会非常慢并且最终会超时。我想以某种方式在这些特定情况下以块的形式获取数据并逐渐将它们提供给前端。我似乎无法找到有关如何做到这一点的任何好信息。这是我的node.js
代码:
router.get('/gene_expr', function(req, res) {
var geneName = req.query.geneName;
var datasetName = req.query.datasetName;
const expr_query =
'MATCH (c:Cell { DATASET: "' + datasetName + '"} )-[ex:EXPRESSES]->' +
'(g:Gene { geneName: "' + geneName + '" }) ' +
'WITH c, ex, g, round(avg(ex.expr)) AS AVG ' +
'WHERE ex.expr > AVG ' +
'RETURN c.tsneX, c.tsneY, ex.expr, c.cellId';
console.log(expr_query);
var driver = dbUtils.driver;
const session = driver.session();
session.run(
expr_query,
{}
).then(result => {
var exprData = chartService.prepareMarkerData(result, geneName);
res.json({
exprData
});
session.close();
});
})
我从未做过这样的事情。这个npm
包是否适合此目的:https://www.npmjs.com/package/cypher-stream?如果我使用它,我还需要设置什么(标题等)以允许流数据馈送?在前端我使用axios
:
axios({
method:'get',
url:url,
responseType:'stream'
})
.then(function (response) { ... })
任何建议都将不胜感激。