2016-11-28 4 views
0

GoodDay, начало экспериментов по Node против MsSql на Azure для решений, ориентированных на данные.Рекомендации по ответам JSON на архитектуре MS-SQL и NODE

Что было бы лучше всего для этого недостатка в архитектуре?
(все коммуникации к БД, чтобы сделать процедуры корыта магазина, очевидно)

До сих пор мы экспериментируем с https://www.npmjs.com/package/mssql и обнаружили, что выходные параметры длятся некоторое время, иногда, пока они не станут готовы ...

так мы думали в:

  • параметров SP вызова как отдельный вход-параметров (проще обращаться в SQL)
  • данных в узел приложения в виде одного (иногда составленному) JSON, как recordse t
  • Код выполнения SP-кода RETURN (202 ok, остальные коды как w3c-коды)
  • Обратное сообщение, в случае ошибки, через выходной параметр.

Любые указания?

Я нашел очень интересный этот binomia (Node + MSSQL), силу, с одной стороны, гибкости и скорости от другого ...

ответ

0

Если вы планируете вернуть один объект JSON в качестве записей, ты планируете просто выполнить запрос select с предложением FOR JSON? 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 to Http output. Он не использует MSSQL, но вы можете легко переписать его для использования MSSQL.

Для JSON может быть удобно, если вы хотите возвращать данные, переданные клиентам, поскольку база данных Azure SQL сбрасывает большие ответы JSON на 2KB-фрагменты, но MSSQL позволяет анализировать весь ответ как один большой объект.

Что касается обработки ошибок, возможно, было бы немного необычно возвращать коды ошибок HTTP непосредственно из хранимых proc в качестве выходных параметров. Возможно, вы можете использовать стандартные инструкции throw/raiserror и код ошибки карты для кодов ошибок Http. В диапазонах 4xx и 5xx имеется около 80 полезных кодов ошибок Http, поэтому достаточно даже состояния ошибки (tinyint).

Смежные вопросы