В этом упражнении мы продолжим работу над
узлом Mongoose сервер, который мы разработали в предыдущем упражнении.
Мы сделаем еще одну вариацию.
Кроме того, мы также рассмотрим, как Mongoose поддерживает поддокументы,
и это позволяет нам хранить документ внутри
документа для хранения дополнительной информации.
Посмотрим на это в следующем упражнении.
Продолжая пример, над которым мы работали, теперь,
в файле index.js,
теперь мы увидим новый способ создания блюда и добавления его в наше приложение.
Итак, ранее мы сделали вар NewDish и блюда и определить блюдо.
Теперь, в этом случае мы будем использовать новый метод под названием блюда create, который принимает,
в качестве параметра, NewDish для создания и затем сохраняет его в нашем приложении.
Таким образом, вместо того, чтобы делать это сохранение NewDish,
мы можем просто удалить это и непосредственно иметь дело с методом создания блюд здесь.
Таким образом, метод создания блюд будет принимать в качестве параметра
новый документ, который должен быть сохранен в нашей базе данных,
а затем создает и добавляет документ в базу данных.
После этого мы можем продолжить остальную часть учений.
Эта незначительная модификация покажет
, что одно и то же приложение работает точно так же, как и раньше.
Итак, с этим изменением
позвольте мне просто изменить отступ
здесь, чтобы цепочка методов тогдашнего очень ясна.
Итак, мы сначала создаем блюда, которые вернут обещание,
а затем переходим к тогдашнему, а затем
выполним оставшиеся шаги на созданном блюде.
Давайте сохраним изменения, а затем посмотрим на эту версию нашего сервера.
Перейдя к терминалу
, еще раз запустив приложение,
мы видим, что оно создаст точно так же, как предыдущая вариация сервера.
Итак, мы создаем новое блюдо здесь, а затем вставляем его в
базу данных, а затем
извлекаем блюдо, а затем распечатываем его на экране.
С этим изменением, это хорошее время для нас, чтобы сделать
git фиксацию с сообщением Mongoose часть вторая.
Итак, давайте проверим статус git, а затем добавим файл в репозиторий,
а затем выполним git фиксацию с сообщением Mongoose часть вторая.
Продолжая упражнение,
на следующем шаге мы собираемся добавить вложенный документ в
документ и посмотреть, как вложенные документы могут быть сохранены в нашей базе данных.
Итак, перейдя к файлу dishes.js,
я собираюсь добавить другую схему в мой файл dishes.js, называемый
как комментарий Schema, а
затем определить это как новую схему.
В этой схеме комментариев,
как вы уже ожидали,
мы будем использовать это для хранения комментариев о блюде.
Таким образом, комментарии будут содержать поле рейтинга, которое
имеет номер типа,
и его минимальное значение - один,
максимальное значение - пять и обязательно - истинно.
Таким образом, вы можете видеть, что когда вы используете поле с номером типа,
вы можете указать границы для него, если вы хотите.
Затем следующее поле представляет собой поле комментария, которое будет иметь строку типа.
Таким образом, это хранит сообщение, а затем
требуется верно, а затем мы также добавим другое поле под названием author,
которое имеет тип строки и обязательно является true.
Мы также добавим поле timestamp для этого
и установим это значение true.
Таким образом, для каждого добавленного комментария
мы также будем хранить соответствующую метку времени.
Итак, теперь, когда мы объявили схему комментариев,
мы можем затем перейти и изменить схему блюда, чтобы иметь возможность хранить комментарии.
Таким образом, в схеме блюд,
мы можем добавить в комментарии,
которые являются массивом схемы комментариев типа,
так что это означает, что каждый объект блюда,
документ блюдо может иметь несколько комментариев, хранящихся в массиве внутри документа блюдо.
Таким образом, это комментарии документы становятся вложенными документами внутри документа блюдо.
Итак, мы храним все комментарии о блюде внутри
самой тарелки в виде массива документов комментариев.
Итак, это использование поддокумента в Mongoose.
После этого давайте перейдем к файлу index.js, а затем изменим наш файл index.js.
Здесь они создают блюдо так же, как и раньше.
Затем после того, как мы создаем блюдо,
затем мы консоли регистрируем блюдо.
После этого мы обновим блюдо.
Итак, мы скажем, блюда найти по ID и обновить.
Итак, мы собираемся изменить блюдо, которое мы только что вставили на предыдущем шаге.
Итак, мы скажем: «Найдите по идентификатору и обновите».
И мы собираемся поставлять.
При этом принимает два параметра,
первым параметром является блюдо.
Теперь, это блюдо. _id, конечно, относится к этому блюду, которое мы только что вставили,
а затем мы собираемся изменить это же блюдо на следующем шаге.
Итак, мы скажем: «Блюдо. _id.» А затем,
в скобках, мы указываем $set, описание,
обновленный тест и new true.
Итак, это, мы модифицируем блюдо, которое мы
только что вставили, обновляя его описание там.
Теперь это должно быть заключено внутри.
Этот второй флаг, который мы поставляем здесь,
новый двоеточие равен true,
означает, что как только обновление блюда
будет завершено, то это вернет блюдо,
обновленное блюдо обратно к нам.
Итак, вот причина использования этого флага здесь, скажем, новая правда.
Таким образом, это блюдо будет возвращено на следующем шаге.
Итак, мы возьмем это блюдо, а потом распечатаем это блюдо.
Итак, на следующем шаге
мы изменим это и скажем: «Это, потом блюдо».
А потом мы сделаем консольный журнал тарелок.
После этого, мы собираемся вставить комментарий в блюдо.
Итак, мы скажем: «Dish.comments.Push».
Напомним, что комментарии — это поле внутри тарелки.
Итак, возвращаясь к схеме,
мы видим, что эти комментарии являются массивом типа CommentSchema.
Итак, что означает, что мы можем нажать элемент в этот массив.
Итак, возвращаясь сюда,
мы скажем: «Блюдо комментарии толкают».
А потом мы вложим в блюдо документ с комментариями.
Итак, я скажу: «Блюдо комментарии толкать».
И укажите поля здесь.
Итак, скажем: «Рейтинг пять, комментарий и автор».
Таким образом, это подтолкнет этот комментарий в поле комментариев этого конкретного блюда.
Итак, теперь, когда мы изменили блюдо,
следующий шаг, который мы собираемся сделать, это,
позвольте мне закрыть это, а затем положить его в него, затем туда.
Я вернусь и починю это через короткое время.
Итак, теперь, когда мы модифицировали блюдо,
нам нужно сохранить блюдо.
Итак, мы скажем: «Возвращайте блюдо в целости».
Итак, на этом шаге
мы вставляем комментарий в блюдо, блюдо,
которое мы только что создали и обновили,
а затем мы сохраняем
этот комментарий; и затем, это вернет блюдо.
И когда блюдо будет возвращено в следующий обратный звонок,
я скажу: «Консольное блюдо».
А потом, после этого,
мы скажем: «Возвращайся».
Таким образом, с этим мы изменили наш файл index.js.
Давайте сохраним изменения и посмотрим на это приложение.
Перейдя к терминалу,
давайте запустим npm start, а затем посмотрим полученное значение здесь.
Итак, возвращаясь назад, мы видим, что на первом шаге
мы создали здесь это блюдо с именем и описанием, как мы дали ранее.
А потом, как только блюдо будет создано,
на втором шаге
мы обновили блюдо, а затем распечатали обновленную версию блюда.
Итак, обновленная версия блюда распечатывается прямо там.
И вы можете видеть, что описание было обновлено от предыдущего случая,
но идентификатор остается точно таким же, как блюдо, которое мы создали ранее.
И поле комментариев,
как вы можете видеть здесь,
является пустым массивом и курящим.
На третьем шаге мы нажимаем комментарий в наше блюдо здесь;
и затем, этот конкретный комментарий, который
мы добавили, был добавлен в этот массив комментариев.
Итак, вы можете увидеть этот комментарий прилагается здесь,
и это обновленное блюдо, которое теперь напечатано на экране здесь.
Итак, вы можете видеть, что мы сделали несколько шагов один за другим с нашим блюдом.
Сначала мы создали блюдо,
затем обновили блюдо,
затем мы вставили комментарий в блюдо,
который является вложенным документом внутри документа блюдо
, а затем мы распечатали вам результат.
С этим мы завершаем это упражнение.
В этом упражнении мы видели, как мы можем
, во-первых, создать блюдо с помощью блюд создать,
затем мы увидели использование поддокументов: там,
мы определили схему в
файле dishes.js, а затем использовать схему комментария, которую мы определили, а
затем определили поле в схеме блюд как типа CommentSchema.
А затем, в файле index.js,
мы смогли создать блюдо,
обновить блюдо, а также нажать
документ с комментариями в блюдо, а затем сохранить изменения здесь.
С этим мы завершаем это упражнение.
Это хорошее время для вас сделать Git Kermit с сообщением «Мангуста часть третья».