Теперь, когда у нас был краткий обзор Mongoose ODM и
как Mongoose приносит схемы для структурирования документов, которые мы храним в нашем MongoDB,
давайте посмотрим, как мы используем
модуль узла Mongoose, а затем включить его в наше приложение узла.
Затем используйте Mongoose для связи с
нашим сервером MongoDB, а затем хранить и извлекать
документы со структурой информации в документах.
Чтобы начать работу с этим упражнением,
перейдите в удобное место на компьютере.
Итак, здесь я нахожусь в папке Node JS, где я хранил
все примеры из этого курса, а затем я собираюсь
создать новую папку с именем node Mongoose.
Здесь мы создадим приложение узла с помощью Mongoose следующий.
В терминале или окне команд
перейдите в папку Mongoose узла, а затем инициализируйте приложение узла там.
Итак, позвольте мне ввести npm init, а затем
инициализировать приложение узла, а затем я назвал бы приложение
как Node-Mongoose, а точка входа - index.js git история,
ключевые слова, автор и лицензия, и мы скажем хорошо.
После того, как ваш файл package.json создан,
откройте проект в текстовом редакторе по вашему выбору.
Итак, здесь у меня есть свой проект, открытый в Visual Studio.
Позвольте мне войти в файл package.json, а затем добавить в
сценарий запуска, а затем мы
скажем, индекс начального узла, как обычно, всякий раз, когда мы начинаем с нового приложения узла.
Затем, перейдя к терминалу или командному окну, давайте установим Mongoose.
Таким образом, в командной строке введите npm install Mongoose, сохраните.
Который на данный момент Мангуст 5.1.7.
Итак, это версии, которые я собираюсь использовать в этом курсе.
Затем перейдите в мое приложение в редакторе.
Позвольте мне создать подпапку в проекте под названием «Модели».
Итак, вот где я собираюсь хранить все модели для моего приложения.
В папке моделей
позвольте мне создать новый файл с именем dishes.js.
Итак, здесь я собираюсь создать схему и модель
для моего документа посуды, который я собираюсь хранить,
коллекцию посуды, которая хранит документы для каждого блюда.
Итак, прямо здесь, позвольте мне сначала импортировать Мангуст.
Итак, мы потребуем Mongoose в этом файле, а затем скажем, что
схема const - это схема Mongoose.
Затем мы создадим схему здесь.
Итак, мы скажем, const DishSchema новой схемы.
Итак, здесь я определяю схему для моего блюда.
Внутри этой схемы позвольте мне определить различные значения.
Итак, я скажу имя,
которое является типом String.
Итак, это тип схемы, а затем это я бы объявил как требуется.
Так что, я скажу «правда».
Таким образом, каждый документ будет иметь имя в качестве обязательного поля там, а затем я
также объявлю это как уникальное значение, что
ни один из двух документов не должен иметь одно и то же поле имени.
Итак, это первое поле в моем документе.
Затем, мы также включим другое поле, называемое как, описание.
Описание имеет тип строки и требуется true.
Кроме того, мы можем иметь Mongoose автоматически вставлять
временные метки в нашу модель.
Итак, прямо там мы можем просто установить флаги времени: true.
Таким образом, это автоматически добавит созданные и обновленные на,
две временные метки в каждый документ, который хранится
в нашем приложении, и он автоматически обновит эти значения.
Всякий раз, когда мы обновляем документ и созданный в будет автоматически
инициализирован, когда документ является первым создателем этого времени.
После этого мы скажем var Блюда.
Итак, учитывая схему,
теперь мы собираемся построить модель из этой схемы.
Итак, мы скажем, модель Mongoose
и блюдо, и это будет использовать схему блюдо, которую мы только что объявили ранее.
Затем мы будем экспортировать
эту модель из этого файла здесь.
Итак, скажем модуль экспорта блюд.
Итак, теперь мы построили
схему Mongoose и соответствующую модель, и модель теперь экспортируется отсюда.
Таким образом, это можно импортировать в наше приложение и использовать.
Итак, в нашей папке проекта
позвольте мне создать новый файл с именем index.js.
В файле index.js
позвольте мне сначала потребовать Mongoose,
а затем после этого мы можем сказать, что
const Блюда требуют модели блюд.
Потому что мы уже создали модель Блюда
в файле блюд модели там и тогда мы требуем ее здесь.
Теперь, чтобы установить соединение с сервером Mongo,
мы скажем const URL mongodb.
Локальный хост 27017, путаница.
Таким образом, эта база данных является той, к которой мы будем подключаться из нашего приложения, а
затем после этого мы можем установить соединение, сказав const connect Mongoose.
Mongoose поддерживает этот метод подключения,
который принимает URL-адрес в качестве первого параметра.
Так что, как только мы установили это,
тогда мы просто скажем, подключимся.
Обратите внимание, что поскольку мы уже используем обещания,
мы можем просто сказать connect тогда, а затем это будет принимать
функцию в качестве параметра
и внутри здесь мы теперь можем подключиться к базе данных.
Итак, теперь, как только это соединение установлено,
позвольте мне сделать журнал консоли,
говорящий правильно подключен к серверу,
и здесь я могу создать новое блюдо, сказав var
new Dish, а затем Блюда и внутри здесь я могу указать документ, поэтому я создаю
новое блюдо такого рода, а затем так здесь Я
укажу два поля, которые являются обязательными.
Так что я скажу имя,
описание и так вот как вы создадите новое блюдо, а затем, как только мы создадим
новое блюдо из модели, мы просто скажем новое блюдо сохранить.
Метод сохранения приведет к тому, что значение Блюдо будет
сохранено, а затем, как вы ожидаете, вернет обещание, а
затем здесь мы получим значение Блюдо, как звонить туда, а затем, я
могу просто записать значение Блюда здесь, а затем мы скажем,
Блюда найти и поэтому мы найдем
все Блюда, а затем сказать «exec».
Exec гарантирует, что это
выполняется и что он вернет обещание и так, что обещание
будет возвращено, чтобы затем он мог
связать метод с остальными.
Таким образом, вы видите, как я использую обещания, а затем я вызываю предыдущий метод, чтобы он
нашел все блюда в моей базе данных,
в коллекции Блюда, а затем сделал его доступным для меня.
Поэтому, когда я получаю блюда, я могу просто консоль регистрировать блюда, чтобы увидеть, что
возвращается, и это, очевидно, на этом этапе должно
вернуть это одно блюдо, которое я вставил в
свою коллекцию посуды, а затем мы скажем, что
возврат Блюда удалить с
пустым объектом JavaScript который удалит все блюда из
базы данных и вернет
соединение mongoose, которое закрывает соединение с базой данных.
И поймать любую ошибку в этот момент.
Таким образом, мы будем использовать catch, а затем консольный журнал.
Вот оно. То, что мы делаем здесь, мы создаем новое блюдо, а затем мы
сохраняем блюдо, тогда мы находим все блюда из коллекции.
Вот оно. Мы используем обещания здесь,
так что мы приковали все болота здесь. Вот оно.
Давайте сохраним изменения, а затем посмотрим, что это приложение выполняется.
Перейдите в терминал, в
командной строке введите npm start, и вы
увидите, что мое приложение узла запускается, а затем оно показывает
, во-первых, что он создал это конкретное блюдо.
Обратите внимание, в частности, что эти два поля,
обновленные и созданные в,
эти две временные метки были автоматически добавлены в
блюдо здесь, и поэтому вы можете видеть, что созданные на и
обновленные в метках времени точно такие же в данный момент, а
затем идентификатор также автоматически добавляется в.
На следующем шаге мы распечатаем все блюда, которые были извлечены, и поэтому вы
можете видеть, что это одно блюдо в коллекции,
Посуда коллекции, и это то, что печатается на экране здесь.
Давайте теперь инициализируем репозиторий Git, а затем давайте настроим полученный файл gitignore,
так что перейдем в редактор, тогда мы создадим файл.gitignore, а затем добавим
модули узлов в файл gitignore и сохраним изменения,
а затем вернемся к подсказке, позвольте мне
ввести статус git, и мы видим, что
у нас есть эти файлы, которые не были проверены, поэтому мы скажем
git add, а затем git
commit сообщение Mongoose Part One.
С этим мы завершаем это упражнение.
В этом упражнении мы видели, как легко настроить приложение узла с
mangoose и подключиться к нашему серверу MongoDB, а затем взаимодействовать с ним.
Теперь, поскольку mongoose строится на сервере
MongoDB, Mongoose может получить доступ ко всем различным методам
, которые поддерживаются драйвером MongoDB.