MS-SQL和NODE体系结构上JSON响应的最佳实践

时间:2016-11-28 17:15:08

标签: sql-server json node.js azure azure-sql-database

GoodDay,在Azure上针对MsSql开始实验,以获得非常以数据为中心的解决方案。

这种缺乏架构的最佳做法是什么?
(显然,通过商店程序与DB进行的所有通信)

到目前为止,我们正在试验https://www.npmjs.com/package/mssql,并发现输出参数有时会持续一段时间,直到它们准备就绪......

所以我们考虑过:

  • SP调用参数作为单独的输入 - 参数(在SQL中更容易处理)
  • 将节点应用程序的数据作为单个(有时是组合的)JSON,作为记录集
  • SP执行代码通过RETURN(202 ok,其余代码为w3c web代码)
  • 如果出现错误,请通过输出参数返回消息。

有任何迹象吗?

我发现这个binomia(Node + MsSQL)非常有趣,从一方面来看,灵活性和速度来自另一方......

1 个答案:

答案 0 :(得分:0)

如果您计划将单个JSON对象作为记录集返回,那么您是否计划使用FOR JSON子句执行select查询? MSSQL supports JSON outputs,但即使没有此功能,您也可以使用pipe方法将结果流式传输到输出流中(我还没试过)。 这是一个示例应用程序,它使用繁琐且仅流的FOR JSON输出到Http响应输出: https://github.com/Microsoft/sql-server-samples/blob/master/samples/features/json/todo-app/nodejs-express4-rest-api/routes/todo.js并将FOR JSON生成的结果流式传输到Http输出。它不使用MSSQL,但您可以轻松地重写它以使用MSSQL。

如果要将分块数据返回给客户端,FOR JSON可能会很方便,因为Azure SQL数据库将大型JSON响应吐出到2KB块中,但MSSQL使您能够将整个响应解析为一个大对象。

关于错误处理,直接从存储过程作为输出参数返回HTTP错误代码可能有点不寻常。也许你可以使用标准的throw / raiserror语句并将错误代码映射到Http错误代码。在4xx和5xx范围内有大约80个有用的Http错误代码,所以即使错误状态(tinyint)就足够了。