在next应用程序中使用knex查询托管在Azure上的SQL Server数据库。当查询一个有150k行的特定表时,应用程序崩溃,但打印返回结果的长度。当查询一个有2k行的小表时,没有问题。
是否对我可以从单个查询返回多少数据有限制?我需要能够在几个表中返回大约100万行数据,这样我就可以聚合和显示使用原始表数据完成的一些计算。
我认为这是可以理解的,数据量占用太多的内存,但我想知道是否有任何解决方法来返回吨和吨行w/o问题。
api/线路/tickets.js
const { Router } = require('express');
const router = Router();
const knex_db = require('knex')({
client: 'mssql',
connection: {
host: 'mydb.database.windows.net',
user: 'user',
password: 'secret',
port: 1433,
options: {
database: 'mydatabase',
encrypt: true
}
}
});
router.get('/tickets/all', async function(req, res) {
const results = await knex_db('dbo.tickets');
console.log('results.length: ' + results.length);
res.json({data: results});
})
module.exports = router;
api/index.js
const express = require('express');
const app = express();
const tickets = require('./routes/tickets');
app.use(tickets);
module.exports = {
path: '/api',
handler: app
}
页面/设置/index.vue
<script>
export default {
async asyncData ({ $axios }) {
const data = (await $axios.$get('/api/tickets/all')).data;
// console.log(data);
return { tickets: data }
}
}
</script>
我可以通过从
更改我的代码来解决这个问题res.json(...)
res.status(200).json(...)
由于某些原因,res.json一定引起了内存泄漏或类似的事情。