首页 > 解决方案 > 使用 Knex - 如何检索多个结果集

问题描述

我正在使用 MSSQL,当我使用 knex.raw 调用此存储过程时,我有一个存储过程返回多个结果集(1 个用于数据,1 个用于记录计数),Knex 仅返回第一个结果集。如何使用 Knex + Node.js 检索其他记录计数结果集?

{“数据”:[{“ID”:6344,“RequestID”:910846045,“请求者”:“XXXXXXX”,“开始”:“09/25/2018”,“完成”:“09/25/2018” } {“ID”:6345,“RequestID”:910846046,“请求者”:“XXXXXXX”,“开始”:“09/25/2018”,“完成”:“09/25/2018”}],“RecordCnt “:2}

标签: knex.js

解决方案


我刚刚遇到了从 using 迁移mssqlknex.

简单的答案是 knex 不支持此功能,但是底层的 MSSQL 客户端(乏味)支持。如果您熟悉mssql客户端,您可以简单地从池中获取连接,然后像往常一样使用它来执行存储过程,例如

const connection = await knex.client.acquireConnection();
const result = await connection.request()
  .input('parameter', value)
  .execute('[procedure_name]');
knex.client.releaseConnection(connection); // we don't have to wait for this

最后一行非常重要,因为我们手动获取连接,我们负责将其释放回池中。不这样做将导致池饥饿,新请求最终将开始失败(基于池的大小)。


推荐阅读