@nodejs_ru

Страница 668 из 2748
Alex
21.03.2017
08:31:45
Контент тоже валидирует - и длина и enum'ы ну и формат конечно же есть

Alexander
21.03.2017
08:42:11
Пытаюсь подключиться к mssql server через tedious, но ничего не выходит. Просто зависает запрос http://pastebin.com/9yV0NDUX

Nikita
21.03.2017
09:38:37
Сап. Допустим у нас есть древовидная структура в монго. При вставке нового потомка у нас две операции: Сама вставка нового узла, добавление в childs парента нового узла. Как их сделать атомарной или одной транзакцией в монго? :с //я знаю, что транзакций вроде как в монго нет, но все же должно быть какое-то решение

Vladimir
21.03.2017
09:39:11
Никак

Google
Nikita
21.03.2017
09:39:32
Другими словами мы не можем гарантировать, что операция всегда выполнится верно?

Vladimir
21.03.2017
09:39:33
Используй только один указатель

Именно

Anton
21.03.2017
09:40:10
Ага, в монге на любом уровне вобще отсутсвует гарантия, что выполнилось хоть что-то

Так что тут только руками писать костыли

Anatoliy Skuratov
21.03.2017
09:45:39
Можно использовать https://docs.mongodb.com/manual/tutorial/perform-two-phase-commits/

Felix
21.03.2017
10:09:44
юзаем swagger (openAPI теперь) это по сути RESTful платформа на основе JSON Schema
валидации только там нет считай (очень ограничено, даже не всю JSON Schema можно), и sway в кучу всего не умеет

в полиморфность несколько месяцев назад не мог по крайней мере

в итоге у меня поверх сваггера был еще и joi

Pavel
21.03.2017
10:14:00
Всё от задачи зависит. И от того что за либа используется. Я юзал swagger-express-middleware. В моем случае я большую часть валидации сделал. Хотя конечно было бы круто если бы можно было вместо tv4 заюзать ajv

Felix
21.03.2017
10:15:34
ну вот я ее и юзал, ну для простейшей валидации пойдет конечно, но обычно нужна не настолько простая

Pavel
21.03.2017
10:16:03
Я больше разочаровался в REST подходе чем в самих либах. Думаю в следующий раз буду смотреть в сторону graphQL

Google
Alex
21.03.2017
10:26:48
Ajv оч ок либа
у нас на AJV вся валидация входных данных построена. Чертовски удобно.

vitaliy
21.03.2017
10:45:18
Alex
21.03.2017
10:52:23
Как валидацию делаете, в каждом контроллере?
смотря о какой мы валидации говорим. Для всяких распространенных штук, типа email, password, id, еще что-то там, есть форматтеры. Они проверяют формат прям в схеме. Часть из них написана нами, часть из коробки была, email например Там же enum-ы. Если вопрос о том, где это вообще проверять, то хм.. в отдельной мидлваре. Если вопрос о том, как делать кросс-валидацию, когда есть несколько полей, которые должны появляться только в определенных комбинациях, то у нас таких случаев мало, но они через вложенные схемы (но тут хитро и не всегда прямо ). Но для нас последний кейс очень не основной, так что всё ок

vitaliy
21.03.2017
10:57:15
Про валидацию входных данных. Если есть контроллер который обрабатывает post запрос например, то в нем и надо валидировать, странно это делать в мидлваре. По поводу текста ошибок, локализуете, насколько можно кастомные вставлять в ajv?

Alex
21.03.2017
11:16:52
Про валидацию входных данных. Если есть контроллер который обрабатывает post запрос например, то в нем и надо валидировать, странно это делать в мидлваре. По поводу текста ошибок, локализуете, насколько можно кастомные вставлять в ajv?
Не, не так. Для валидации есть отдельная мидлваря. Точнее, конструктор мидлварь. Передаешь туда нужную схему - на выходе у тебя уже конкретный инстанс мидлвари. Схемы объявляются в отдельных файлах рядом с контроллером. Ну, типа UserCreateFormSchema.

Примерно так



Это я на коленке собрал пример, так что если где-то ошибка синтаксическая, то не обзывайтесь))

Для двух-трёх методов это явно оверкил. Но у нас очень-очень-очень развесистое API

Alex
21.03.2017
11:29:50
ага

еще там можно нормальных методов оберточных написать пару хелперных функций (toAjvObject и toAjvArray) и вынести все эти {type: 'string'} в отдельный нормальный объект

блин, да тут даже мини доклад можно сделать

админы, надо такое?

и даже развесистые схемы пишутся довольно кратко

A
21.03.2017
11:53:32
привет

как req.locals. назначить?

отбой

не тот express стоит

Google
Aler
21.03.2017
13:23:05
@silent_banofbot

Ches
21.03.2017
13:23:10
подскажите почему не работает





Aler
21.03.2017
13:23:40
CORS не настроены

Ches
21.03.2017
13:23:58


вроде до этого эта либа cors отключала

Aler
21.03.2017
13:27:08
покажи инклуд cors

что это за модуль

cors который?

Ches
21.03.2017
13:28:01
https://www.npmjs.com/package/cors

fuf

Ches
21.03.2017
13:28:03
ага*

Aler
21.03.2017
13:28:58
покажи еще как создаешь на стороне сервера сокет

я давно с express и сокет.ио разбирался, но сейчас вспомню, что не так)

Ches
21.03.2017
13:30:09
было бы круто)

сверху скрин

второй

самое простое

дальше пока не могу уйти)

Google
Aler
21.03.2017
13:31:00
я имею ввиду в ноде, а не на клиенте

io.set('origins', '*:*');

просто скорее всего у тебя io работает отдельно от express

Ches
21.03.2017
13:33:05
там каша уже, все что можно добавлял

var cors = require('cors'); const open = require('open'); const socket = require('socket.io'); var app = express(); var corsOptions = { origin: 'http://localhost:3000', optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204 }; app.use(cors(corsOptions)); var http = require('http').Server(app); // const io = socket(http); var io = require('socket.io')(http, { origins: '*:*'}); io.set('origins', '*:*'); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); });

Admin
ERROR: S client not available

Ches
21.03.2017
13:33:47
остальное все от экспрес генератора

Aler
21.03.2017
13:36:46
ну и наворотил) попробуй убрать сначала все cors. Из app.use, из require('socket.io') и из io.set

оставь вот так: var io = require('socket.io')(http); io.set('origins', '*:*');

и почему у тебя путаница с 3001 и 3000 портом?

Ches
21.03.2017
13:41:16
ну на 3000 клиент а на 3001 нода

Aler
21.03.2017
13:41:51
понял, попробуй как написал, должен принять запрос

Ches
21.03.2017
13:42:27
нет(

Aler
21.03.2017
13:42:30
хотя он еще и 404 возвращает, так что может проблема и не в CORS..

ничего не изменилось, да?

Ches
21.03.2017
13:42:41
угу

Aler
21.03.2017
13:44:58
а какая версия экспресса?

Ches
21.03.2017
13:45:38
"express": "~4.14.1",

Aler
21.03.2017
13:46:15
вроде просто правильно все..

а много еще всего в проекте?

Google
Aler
21.03.2017
13:46:36
попробуй создать app2.js и оставить в нем только эти строки

может проблема где-то еще)

Ches
21.03.2017
13:47:09
да говорю, только сгенерил через express generator)

чистый проект)

а с клиента же все правильно уходит?

<script src="https://cdn.socket.io/socket.io-1.3.5.js"></script> <script> var socket = io('http://localhost:3001'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script>

Aler
21.03.2017
13:53:06
проверил только что у себя

все ок

у меня пришло

конфигурация как и у тебя - вью отдельно, нода отдельно

ааа бля

io.connect()

на вью

хотя у меня и без connect пашет

https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js у меня сокет посвежее

"dependencies": { "express": "^4.15.2", "socket.io": "^1.7.3" }

в депах так

Страница 668 из 2748