yopp
если используется дата, значит порядок не очень важен
yopp
у меня с прошлого месяца теперь любимый вопрос про время: сколько временных осей надо, чтоб синхронизировать аудио и видео ;) до этого был: какое время на танкере плывущем в северном ледовитом окане, с запада на восток.
Bro
да, порядок не очень важен
Lev
Как я понял, change stream доступно только если включена replica set. При этом собственно репликация или что там еще мне не нужен, мне пока и одной базы хватает. Мне надо чтобы мое приложение слушало базу данных. Как мне включить replica set? Я попробовал запустить с --smallfiles --replSet rsMainScadaDev но мое приложение не стартует ожидая что в бд омжно записывать. Я думал, эта единственная реплика должна стать мастером. Вероятно она ждет другие ноды, чтобы вместе решить кто главный. Если рассуждения верны - как ее успокоить, чтобы она была главной? Я это все в докере пытаюсь запустить, чтобы он опри старте само настраивалось
倫太郎
@dd_bb
yopp
?
倫太郎
ну боты
yopp
ну пока не спамят и пофиг
倫太郎
yopp
в телеге неудобно удалять юзеров если они ничего не писали
倫太郎
ну для этого есть боты
yopp
потом их отстреливают достаточно быстро
yopp
они все примерно говно
倫太郎
ну мой норм
yopp
но я рекомендую расстаться с идеей автоматизировать разворачивание монги в докере
yopp
особенно если вы планируете с этим потом в продакшен
Lev
Все настолько плохо?
yopp
это очень ненадёжно
Lev
Ну ... окей... ну скриптом хотя бы после запуска докеров
yopp
зачем?
Lev
Ну у меня две базы на них надо независимую реплику. на каждую
yopp
два раза rs.init и свободны :)
Lev
Не соваться же к кадой в контейнер
Lev
И оно говорит что это не фцнкция
Lev
rs.init is not a function
Lev
Я наверно тупанул дичайше. Я зашел в контейнер и запустил mongo, попал в ее консоль как я понял
yopp
https://docs.mongodb.com/manual/tutorial/deploy-replica-set/
yopp
rs.init это сокращенно от rs.initialize
yopp
почитайте плейбук
Lev
rs.initiate()
yopp
ну да
yopp
не верьте чату, верьте доке ;)
Lev
А там этот оплог... он будет до бесконечности складироваться?
Lev
Не, давайте так
Lev
--replSet и rs.initiate() Этого должно хватить для однонодовой реплики? мне надо знать еще какие то подводные камни? Огромный оплог или чет такое?
Lev
Все равно не хочет работать... что ж такое...
Andrey
ребят, а не кажется что этот метод по-хорошему должен возвращать result в случае если ошибки нет? а то получается у метода .withSession тип Promise<void>, а хотелось бы Promise<any>
Andrey
https://github.com/mongodb/node-mongodb-native/blob/c9a598544d6148d7e22fe355b718207d70c0b24c/lib/mongo_client.js#L393
Nick
откройте ишью на гите, тут врятли есть разрабы нодовского драйвера
Andrey
чет не видно у них вкладки ишьюсов
Nick
эм
Nick
https://github.com/mongodb/node-mongodb-native#bugs--feature-requests
Nick
типа юзайте жиру и будет вам счастье
Nick
конечно такой подход для них проще, все в одном месте
Andrey
ага, спасиб
Nick
я чет даж и не знал что можно отрубить создание ишью на гитхабе)
Andrey
имхо не очень удобно для клиентов, а для синкапа можно использовать плагин или бота какого-нибудь
Anonymous
поиск по наличию или отсуствию поля — антипатерн
то есть лучше использовать дефолт типа null и искать $ne null ?
Anonymous
что предпочесть - коллекцию с документами с полем-массивом, в который раз в неделю будет добавляться небольшой обьект, и у каждого документа связь с другой коллекцией 1:1. или же проедпочесть встраиваение?
Nick
что предпочесть - коллекцию с документами с полем-массивом, в который раз в неделю будет добавляться небольшой обьект, и у каждого документа связь с другой коллекцией 1:1. или же проедпочесть встраиваение?
то что облегчит вам жизнь, оцените какие запросы будут и могут появиться в вашем проекте и прикиньте какой из вариантов вам лично будет проще делать
Anonymous
подскажите, нужна временная метка с точностью до дня, имеет ли смысл использовать ISO или Unix-timestamp, или можно обойтись YYYYMMDD ?
yopp
то есть лучше использовать дефолт типа null и искать $ne null ?
Оба варианта не очень. Потом у вас появляется ещё одно подобное поле и ситуация становится совершенно печальной. Отсутсвие поля обычно признак полиморфизма. Более эффективно завести свойство указывающее на тип документа и использовать его для выборки.
Anonymous
В чём смысл использовать строку, если есть тип для дат?
записи будут добавляться в один день , и если у них будет одно число, но при этом разное время добавления, будет выглядеть неконсистентно, мне не нужно, чтоб где-то было видно время. Если только не передавать заранее фиксированную на 10 часах утра timestring🤔
yopp
вы можете с таким-же успехом сделать объект с датой в нужный момент
yopp
и использовать его вместо строки
yopp
строки потом очень неудобно сравнивать, они не поддерживают математику
Anonymous
строки потом очень неудобно сравнивать, они не поддерживают математику
в случае yyyymmdd если это int то вроде сравнение работает
yopp
20190302 - 20190201 => 101
yopp
не очень математика
Anonymous
про математику я не говорил) мне такое не к чему. Но iso действительно выглядит унифицированнее
yopp
я всё ещё не понимаю в чём смысл использовать неподходящий тип
Anonymous
я всё ещё не понимаю в чём смысл использовать неподходящий тип
стандартный тип date хранит время, которое не нужно и придётся искусствено фиксировать
yopp
чем «искуственно фиксировать» будет отличаться от иницилизации вот этого странного числа?
yopp
или строки?
yopp
вам в любом случае надо иницилизировать объект с нужной вам датой
yopp
странное число так ещё и сложнее будет, потому что надо будет умножать и складывать
yopp
либо приводить строку к числу
Anonymous
либо приводить строку к числу
данные с сервера фронтенду будут приходить без обьектов ISODate, а как строка/число, так что где-то это придётся делать, если понадобится с этим работать. Я встречал разные способы решения (видимо, зависит от движка апи). Некоторые отдавали данные в виде { value: Float, time : timestamp(ms)}, такой формат показался доаольно растпространённым среди либ для генерации графиков. Если при хранении в бд у меня там будет Date type, то предстоит описать хук для конфертации , чтоб не грузить клиент.
Anonymous
С тз дб, тут без вопросов , но всегда приходится идти на компромис с удобством для конечного пользователя.
yopp
вы смешали кучу проблем
yopp
если у вас протокол не поддерживает даты, всегда есть RFC 3339
yopp
который имеет очень широкую поддержку и является стандартом передачи дат в строках
yopp
передавать даты в виде числовых таймштампов это плохая затея, особенно когда вы с клиета что-то передаёте и дата клиентом и сгенерированна
yopp
особенно в виде float