Andrew
Пришлось вот так сделать, может быть кто-то знает вариант получше? 🤔
Andrew
на полях моделей монгуса можно select: false
А когда мне в другом контроллере потребуется выводить их, как быть?
Dmitrii
я не думаю что это чат про монгус, лучше пойти в соответственный чат или почитать доку
Andrew
mongoose, почему для объектов в массиве select: false не работает?
Andrew
@dimonnwc3 может быть ты знаешь?
yopp
А когда мне в другом контроллере потребуется выводить их, как быть?
на мой взгляд, ваши проблемы от того, что у вас где-то нарушено распределение отвественности
Andrew
у меня пока что нет распределения ответственности
yopp
у вас не тот класс занимается не той работой
yopp
что вы с этими данными потом делаете, что вам нужно их очищать от полей?
Andrew
что вы с этими данными потом делаете, что вам нужно их очищать от полей?
сохраняю в базу к себе, пользователю вот эти 3 поля не нужно видеть, я их собираю для себя
yopp
не нужно видеть где?
Andrew
не нужно видеть где?
когда они видят результат проверки аккаунта
yopp
вы там где данные отображаете, там поля и фильтруйте
yopp
сделайте презентер, в него уберите логику
yopp
и потом везде где надо выводить данные скрывая поля в зависимоти от типа и используйте презентер с фильтром
Andrew
и потом везде где надо выводить данные скрывая поля в зависимоти от типа и используйте презентер с фильтром
а мне надо не скрывать данные, а вообще сделать так чтобы пользователь не знал что такие данные о нем есть
yopp
под скрывать я имею ввиду вообще не отображать
yopp
вы вероятно в какой-то шаблон подставляете эти модели
yopp
вот внутри этого шаблона используйте паттерн презентер
Andrew
у меня vue используется
Andrew
если я на сервере не вырежу из ответа эти поля, то они будут видны в ответе))
yopp
я вам и предлагаю их вырезать _там_ где вы генерируете ответ
yopp
нет никакой разницы что это, json, html или xml
yopp
в той точке где вы сериализуете вашу модель в нужный вам формат, там и фильтруйте данные
yopp
res.json -> new AccountPresenter(account).to_json()
yopp
и внутри AccountPresenter развлекайтесь как хотите
Andrew
спасибо за совет
Anonymous
Использую mongoengine для доступа к бд. Кто-нибудь может подсказать, где можно почитать про то, как писать юнит тесты для нее? Примеры?
Roman
доброго вечера! проверьте меня пожалуйста query.$expr = { $gt: ['$following', { $divide: ['$followers', 2] }] }; в моем запросе following в 2 раза больше чем followers у каждого документа, так?
Roman
потому что в результатах получается чет не оч так :/
yopp
а что получается в результатах?
Andrey
привет, нужно вставить в документ json у которого в некоторых ключах у объектов есть "." как это сделать с помощью mongoose?
Andrey
разобрался для .save({checkKeys:false}), жаль для insertMany не работает
Adel
Ребят, не могу сделать connect приложения в Mongodb Atlas. Использую zeit.co, он при развертывании создает новый ip. Поэтому whitelist IP не вариант. Кто-нибудь сталкивался с проблемой connect`а с zeit.co?
Dmitrii
whitelist 0.0.0.0/0
Roman
а что получается в результатах?
Как будто не было такого в запросе
Do Some
Всем привет! Подскажите как лучше реализовать сброс данных с базы на дешевой VPS на локальную машину?
Do Some
А то там ей поплохеет скоро =)
Do Some
Например вижу три варианта: 1. репликацией (не уверен что подходит, мало опыта) 2. командой копирования базы в консоли монги 3. выгрузка скриптом + удаление
yopp
привет, нужно вставить в документ json у которого в некоторых ключах у объектов есть "." как это сделать с помощью mongoose?
Заменять на другой символ. Точки и $ в именах раньше вообще запрещено было использовать, а теперь просто не рекомендуется.
yopp
У вас могут быть огромные проблемы с выборками по таким полям
yopp
Всем привет! Подскажите как лучше реализовать сброс данных с базы на дешевой VPS на локальную машину?
Если один раз, то mongodump https://docs.mongodb.com/manual/tutorial/backup-and-restore-tools/#binary-bson-dumps
Do Some
Не один раз, а периодически. Буду следить за объемом на VPS. Но вроде как и для периодического использования подойдет вариант, да?
yopp
А цель какая?
Do Some
Ресурсов мало на VPS. Сейчас не готов платить больше. Нужно сбрасывать на локальную машину в монгу. Пока что так.
Do Some
Кстати монгу прибили на VPS по причине нехватки памяти. База в монге весит 185 мБ. Не подскажете куда копнуть чтоб разобраться почему не хватило памяти и сколько она реально занимает в оперативке?
Do Some
Вроде нашел. .stats() https://docs.mongodb.com/v3.6/faq/diagnostics/ Starting in 3.4, the WiredTiger internal cache, by default, will use the larger of either: 50% of (RAM - 1 GB), or 256 MB. Получается с моим гигом оперативки монге доступно 256 мб?
yopp
до 500мб бесплатно
Mikhail
народ, всем привет подскажите, как в монге сделать запрос со сравнением двух полей документа и вернуть только те документы, поля в которых подходят по условию? например, есть документы с такой схемой: { name, quantity, amount } Нужно вернуть только документы, у которых quantity < amount
Mikhail
я гуглил, но нашел только сравнение с константами
Eugene
$where
Eugene
но там производительность тоскливая будет
Eugene
и есть вроде еще варианты, но не помню точно, через агрегации можно и $ROOT
Eugene
и судя по гуглу в 3.6 ввели это https://docs.mongodb.com/manual/reference/operator/query/expr/, достаточно полезная штучка
Mikhail
спасибо!
Mikhail
подскажите, а как обратиться к полям вложенного в документ объекта по аналогии с "$field" ?
Mikhail
"$field.property" ?
Mikhail
в общем еще раз убедился, что надо все и везде денормализовывать
yopp
или Aggregation Framework / $expr, но будет очень больно из-за того что вы будете проезжать по очень большому числу документов
yopp
вероятнее всего по всей коллекции
yopp
так-же как и всё нормализировать
yopp
надо искать баланс
Артём
Гайз, есть вопрос. Есть сайт с категорией товаров и 2 языка. Товары должны отображаться в завимимости от языка. Как лучше хранить товары? В одном документе или в двух?
yopp
для товара добавить поле-массив, куда класть названия стран для которых доступен товар
yopp
и локализовать поля
yopp
это если остатки учитываются вне зависимости от страны
Артём
Ну по сути у меня, например, название товара дожно быть на двух языках. title: "Название 1" и title: "Name 1"
yopp
title.en => Name, title.ru => Название
Артём
Предлагаешь поле-массив с en и ru?
yopp
{ available_in_stores: ["ru", "en"] title: { en: "Title", ru: "Название" } } или { available_in_stores: ["ru", "en"] title: [ { lang: "en", text: "Title" }, { lang: "ru", text: "Название" } ] }
Артём
пробовал даже en: { title: "" }
yopp
у второго варианта есть огромное приемущество: можно сделать индекс title.text и title.lang
yopp
т.е. искать можно будет сразу на всех языках
yopp
но второй вариант немного сложнее в реализации