2016-11-28 70 views
0

GoodDay,开始在Node上针对Azure上的MsSql进行试验,以获得非常以数据为中心的解决方案。MS-SQL和NODE体系结构上的JSON响应的最佳实践

对于这样短的架构,最佳实践是什么?
(在数据库中的所有通信进行槽存储过程的,很明显)

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

因此,我们已经想到成:

  • SP呼叫参数作为独立的输入参数(更容易在SQL治疗)
  • 数据到节点应用程序作为单个(有时构成)JSON,作为recordse t
  • SP执行代码槽RETURN(202 ok,其余代码为w3c网页代码)
  • 返回消息,出错时通过输出参数。

任何迹象表明?

我发现很有趣的这个binomia(节点+ MSSQL),强度从一个侧面,从另外一个灵活性和速度......

回答

0

如果你打算回单JSON对象作为记录,是你计划只用FOR JSON子句执行select查询? MSSQL supports JSON outputs,但即使没有此功能,也许您可​​以使用pipe方法将结果流式传输到输出流(我还没有尝试过)。 下面是一个示例应用程序,它使用单调乏味的流向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)也足够了。