
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/

Vladimir
21.03.2017
09:50:38

Felix
21.03.2017
10:09:44
в полиморфность несколько месяцев назад не мог по крайней мере
в итоге у меня поверх сваггера был еще и 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

Roman
21.03.2017
10:20:19

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

Stas
21.03.2017
10:41:45

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
Примерно так
Это я на коленке собрал пример, так что если где-то ошибка синтаксическая, то не обзывайтесь))
Для двух-трёх методов это явно оверкил. Но у нас очень-очень-очень развесистое 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"
}
в депах так