GoodDay,在Azure上针对MsSql开始实验,以获得非常以数据为中心的解决方案。
这种缺乏架构的最佳做法是什么?
(显然,通过商店程序与DB进行的所有通信)
到目前为止,我们正在试验https://www.npmjs.com/package/mssql,并发现输出参数有时会持续一段时间,直到它们准备就绪......
所以我们考虑过:
有任何迹象吗?
我发现这个binomia(Node + MsSQL)非常有趣,从一方面来看,灵活性和速度来自另一方......
答案 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)就足够了。