Ответы пользователя по тегу MongoDB
  • Как делается Back-End на Node JS?

    @vshvydky
    express
    koa
    loopback
    nest
    fastify
    для работы с монго можно выбрать mongoose или typeorm
    Ответ написан
    Комментировать
  • Cannot read property 'length' of undefined Node JS?

    @vshvydky
    если comments из бд получит null а потом ты ее мапнешь в items то items.length явно будет равнозначно null.length что отражено у тебя в ошибке
    Ответ написан
  • Как сократить запросы update при учете просмотров документа?

    @vshvydky
    1. создать коллекцию (таблицу) ид чего-то , счетчик просмотров
    2. на гет запрос получения данных по этой коллекции вешаешь мидлвару, в ней делаешь инкремент счетчика
    3. отдаешь клиенту контент
    4. радуешься жизни
    ps: про инкремент счетчика
    Ответ написан
    Комментировать
  • Проблема с socket io?

    @vshvydky
    1. чаты делятся на комнаты, реализуешь протокол, можно типо ирц. Например есть на сервере подписка request:join
    Когда твой клиент решает войти в определенный чат, он делает отправку запроса на сервер emit('request:join', roomName); на сервере есть реакция, обработка можно ли клиенту присоединиться к этому чату или нельзя.
    2. в обработке события на сервере у тебя идет on('request.join', roomName=>socket.join(roomName); В этот момент надо перебрать все активные сокеты, на предмет того, используется ли клиентом второе окно (если это требуется конечно).
    3. По этому принципу можно строить и общие чаты, и приватные. Люди начинают общаться не друг с другом, а писать в канал. клиент пишет emit('message:send", {room: id, message}), на сервере это пересылается в рум как .on('message:send', message=> io.to(message.room).emit(message.message)
    В результате получается что клиенты общаются между собой, но по факту лишь шлют все данные своему серверу, а он уже принимает решение уведомить об этом остальных или нет.
    Ответ написан
    Комментировать
  • Где почитать про проектирование баз данных(nosql) с практическими примерами?

    @vshvydky
    Читал на хабре подобное и девелопер опускал нереляционки там, где может потребоваться фильтрация , анализ, группировки и тп. В результате из той статьи я для себя сделал вывод, что не стоит пытаться из документной бд выстроить реляционную. Ссылку к сожалению сейчас не найду.
    Ответ написан
    8 комментариев
  • Генерация кода заказа?

    @vshvydky
    Сгенерируйте эти коды заблаговременно и статус кода использован или свободен, а далее к монго запрос получить свободный лимит 1 апдейт использован, но мне кажется это решение диким.
    Ответ написан
  • Как в sails получить сортированные данные из базы?

    @vshvydky
    если есть решение на монгодб, так может воспользоваться им пока не пришло осознание, как реализовать через ватерлайн? Ссылка на мою мысль
    Глубже пока не вникал, потому сильнее не подскажу
    Ответ написан
  • Как подключится к mongodb из клиентского javascript?

    @vshvydky
    Vetal Matitskiy: на мой взгляд вы ленитесь запустить рест апи, давайте рассудим, нагрузка по выборке данных в любом случае будет храниться на сервере, отдавая такие возможности во фронтэнд вы лишаете себя контроля по числу запросов, их корректности, а как следствие создаете неконтроллируемую нагрузку на бд. Минусы, которые я вижу, число одновременных подключений к бд может быть огромным, зачем себя флудить? 2. любой запрос вне вашей логики может использовать поиски к неиндексированным данным, что может привести к блокировкам. 3. вы отдадите клиенту логин и пароль на чтение, что он будет делать с ними после этого только ему известно. Теперь о плюсах использования бекэнда, чтобы совсем лениться, как вариант ставим ноду и устанавливаем фреймворк sails.js, устанавливаем проект, получаем готовую базу для бекэнд апи, генерируем апи контроллер, описываем модель и что она будет выдавать, вот вам и выборка из бд, а клиента учим отрисовывать это все в фронтэнде. можно через тот же ангуляр.
    я конечно понимаю, что это не ответ на ваш вопрос, но вы не можете найти решение именно потому, что так не надо решать.
    Для примера sails new Project создаст проект
    sails generate api post создаст фулрест апи с описанными методами find, findOne, create, update, destroy, populate, add, remove
    ненужные отключаете и все готово.
    Я конечно понимаю, держать бекэнд кажется лишним, но когда вы получите одновременно 5 - 10 запросов на полную выборку из огромных таблиц, ваш сервер встанет в ожидание и начнет отказывать клиентам в получении данных, поймете, что пришли не туда, куда хотели и будете все в спешке переделывать.

    Естественно sails не обязателен в использовании, можно найти кучу других решений.
    Вот например первый ответ из гугла: https://www.npmjs.com/package/restful-api
    В любом случае я 10 раз рекомендую подумать перед тем, как отдавать такой функционал во фронтэнд. И да, если не передумаете, пришлите ссылку на готовый проект. может мне ваши данные покажутся полезными и я их целиком выкачаю ))))
    Ответ написан
    6 комментариев