Dmitriy
тогда у вас запрос не правильно составлен, сейчас вы фактически делаете price >= '' && price =< ''
Dmitriy
в математике такое обычно не работает, хотя готов допустить, что это возможно
Dmitriy
вам выше ответили и даже код привели как будет проще всего реализовать это
Dmitriy
если такой вариант не подходит, то можете через $or сделать условие, но на мой вкус вариант выше лучше
Mike
там только валидацию данных я не добавил
Mike
но думаю эль анонима сам справится
Anonymous
Ok. Как мне сделать, что при отсутсвии параметров в запросе соответствующая часть запроса игнорировалась? Скажем, нет max, ищем только по name_filter и min.
Dmitriy
Mike
я же тебе привле код
Dmitriy
именно по вашему запросу
Anonymous
Какая валидация нужна в примере выше? Пo typeof ?
Mike
там просто проверку расширь не просто if(req.params.max) - это пропустит если данный параметр есть . До if(req.params.max&& isNumber(req.params.max))
Anonymous
Спасибо.
Mike
Спасибо.
там только внимательнее потому что typeof '4' = "string"😂
Anonymous
Mike
С валидацией перемудрил 146%
Anonymous
Проверка isNumber не существует в JS, поэ\тому написал её так:
const isNumber = value => {
if (typeof value !== 'number') {
return false;
}
if (value !== Number(value)) {
return false;
}
if (Number.isFinite(value) === false) {
return false;
}
return true;
};
Dmitriy
парни а в js не существует готовых либ для красивой валидации? вы всегда во всех проектах городите вот такое? 😳
Mike
Там стандарта нет как это делать
Mike
Мильон способов есть
Kenan
Yʉri 🇺🇦
Aleksandr
Валидация это вполне самостоятельная тема, не связанная с монго
Mike
Anonymous
Вроде, починил.
if (req.params.name_filter && typeof req.params.name_filter === 'string') {
query['name'] = {};
query['name']['$regex'] = req.params.name_filter;
}
S
нормальная практика во всех коллекциях указывать timestamp?
S
благодарю парни
Андрей
Всем привет. Посоветуйте толковые ресурсы по MongoDB
Сергей
те кто интересовался моим трудоустройством)) мне даже не ответили:D
Mike
ну вот
Сергей
ага
Сергей
забыл отписать
Anonymous
Все спасибо за участие, текущий шаг работает.
Anonymous
Прочитал о Монго.
"хотя в самой свежей версии даже сделали транзакции, там они похоже, весьма неполноценные, то есть не умеют например ждать друг друга".
Это так?
Stanislav
Всем привет. подскажите, как правильно сделать отказоустойчивость mongos ? я поднял шардированный кластер, поднял cfg сервера, поднял mongos, на который ходят приложения, но пишут что его нельзя просто так отскалировать. как быть? ставить по монгосу на кадое приложение?
Mike
Dmitriy
но это не по теме чата)
Mike
Mike
Dmitriy
тем более вам на уровне базы данных надо свой конвеер пилить и следить за стейтами. зачем, когда все это можно дешевле сделать
yopp
yopp
Это ACID транзакции
yopp
Да, в монге исторически нет блокировок, но это не к транзакциям вопрос
yopp
В смысле user defined блокировок
yopp
yopp
Slavik
Подскажите пожалуйста, есть документ с полями: startDate, endDate, status. Хочу менять status если startDate < now Date, и так же менять если дата конца проходит. Как это правильно сделать?
Андрей
yopp
Dmitriy
yopp
Slavik
Ilya
Я точно не знаю, может быть есть способы решить эту проблему? Потому что для меня это существенный недостаток, приходится разделять данные на 2 коллекции (те, которые изменяются в транзакциях, и все остальные), чтобы таких вот казусов не возникало.
Dmitriy
я хз, не очень понимаю что вы по коду делаете, зачем обновление полей внутри одного документа делить на 2 запроса впринципе. но выглядит так, что вам в принципе не нужна в приведенном случае транзакция, а нужен findAndModify, внутри себя атомарный.
yopp
yopp
я не вижу чтоб вы транзакцию комитили
yopp
т.е. да. №2 будет делать retry внутри пока не закончится maxtimems
yopp
но я так понимаю у вас в коде дедлок получается
yopp
потому что вы внутри контекста открытой транзакции ждёте выполнение операции которая зависит от тразакции
yopp
по этому и №1 не комиттится
yopp
вам нужно вынести операцию из конекста транзакции
Ilya
я хз, не очень понимаю что вы по коду делаете, зачем обновление полей внутри одного документа делить на 2 запроса впринципе. но выглядит так, что вам в принципе не нужна в приведенном случае транзакция, а нужен findAndModify, внутри себя атомарный.
Это просто абстрактный пример. Допустим, у меня есть документ пользователя системы. Этот пользователь может совершать как транзакционные операции (авторизация, деавторизация, покупка товаров и.т.д.), затрагивающие его документ, так и обычные операции вне транзакции. И вот что, если транзакционная операция и не-транзакционная будут выполнятся в один момент, и возникнет такая ситуация? У него все подвиснет, как минимум.
Не знаю, я просто пытаюсь учесть все возможные варианты, когда что-то может пойти не так, и это меня беспокоит.
yopp
Это просто абстрактный пример. Допустим, у меня есть документ пользователя системы. Этот пользователь может совершать как транзакционные операции (авторизация, деавторизация, покупка товаров и.т.д.), затрагивающие его документ, так и обычные операции вне транзакции. И вот что, если транзакционная операция и не-транзакционная будут выполнятся в один момент, и возникнет такая ситуация? У него все подвиснет, как минимум.
Не знаю, я просто пытаюсь учесть все возможные варианты, когда что-то может пойти не так, и это меня беспокоит.
я вам ссылку на видео дал