• экспресс - для нашего внутреннего сервера.
  • mongoose - для работы с MongoDB
  • dotenv - для предоставления учетных данных с использованием переменных среды

Во-первых, давайте подготовим наш рабочий каталог.

$ mkdir express-mongodb
$ cd express-mongodb

Шаг 1. Инициализируйте npm в каталоге и установите необходимые модули. Также создайте индексный файл. (Чтобы начать работу с экспрессом, прочтите эту статью)

$ npm init
$ touch index.js
$ npm i express mongoose

Шаг 2. Инициализируйте экспресс-приложение и заставьте его прослушивать порт на локальном хосте.

const express = require("express");
const app = express();
app.listen(3000, () => console.log("Server is running"));

Шаг 3. Требуется пакет мангуста

const mongoose = require("mongoose");

Подключиться к кластеру в облаке MongoDB

1. Код подключения

Предоставьте MongoDB URI вашего кластера mongoose.connect() (см. Эту статью для создания кластера бесплатного уровня для MongoDB в облаке)

mongoose.connect(
    process.env.MONGODB_URI, 
    {
        useNewUrlParser: true,
        useUnifiedTopology: true
    }
);

process.env.MONGODB_URI - используется для получения значения из переменной окружения

Рекомендуется использовать переменную среды, чтобы ваши учетные данные не были открыты при загрузке репозитория онлайн.

dotnev Пакет npm может использоваться для предоставления переменных среды

$ npm i dotenv
  • В файле index.js добавьте следующее вверху.
require("dotenv").config(); 
  • Создайте файл .env и укажите свои учетные данные в указанном формате (ключ = значение)
MONGODB_URL="your-mongodb-uri-here"

Убедитесь, что вы включили файл .env вместе с каталогом node_modules в .gitignore.

2. Определите схему

Давайте создадим схему для новой коллекции.

Схема определяет структуру документа со всеми именами и типом полей.

const studentSchema = new mongoose.Schema({
    roll_no: Number,
    name: String,
    year: Number,
    subjects: [String]
});

mongoose.schema() принимает объект javascript.

Имя свойства - это поля для документа.
Значение свойства представляет тип для конкретного поля.

Чтобы сделать любое поле обязательным, сделайте required как true.

roll_no: {
    type: Number,
    required: true
}

Поскольку мы хотели указать, что это требуется, то есть для отправки другой информации вместе с типом поля, мы представляем значения, которые должны быть отправлены в объекте.

Чтобы узнать больше о типах схем, прочтите документацию здесь.

3. Определите модель.

Давайте создадим нашу модель, передав схему и имя нашей модели.

const Student = mongoose.model('Student', studentSchema);

- studentSchema - схема, которую мы только что создали
- 'Student' - имя для модель, поэтому будет создана коллекция с именем "студенты" (форма множественного числа со строчными буквами)

Теперь, когда наша модель готова, мы можем создавать API для получения, добавления, удаления и обновления наших документов в нашей коллекции.

Давайте добавим два документа всякий раз, когда наше приложение загружается

const stud = new Student({
    roll_no: 1001,
    name: 'Madison Hyde',
    year: 3,
    subjects: ['DBMS', 'OS', 'Graph Theory', 'Internet Programming']
});
stud.save().then(() => console.log("One entry added"));

Отправив объект, содержащий значения, в нашу модель Student, мы можем создать новый документ и использовать метод save() для сохранения нашего документа в облаке.

Теперь давайте определим запрос на получение для корневого маршрута, который возвращает все документы в коллекции Student, которая должна возвращать документ, который мы добавили.

app.get('/', (req, res) => {
    Student.find({}, (found, err) => {
        if (!err) {
            res.send(found);
        }
        console.log(err);
        res.send("Some error occured!")
    })
});

model.find() находит и возвращает документы

Первый параметр {} - для указания запросов на получение документов, соответствующих определенному условию. (Здесь мы оставляем поле пустым, чтобы получить все документы)

Второй параметр - это функция обратного вызова, которая возвращает найденные документы и ошибку, если таковая возникает.

res.send(found) возвращает найденные документы в качестве ответа

Давай попробуем запустить наше приложение!

Вы можете увидеть сообщения «MongoDB connected» и «Одна запись добавлена» в нашей консоли.

Запросите корневой маршрут «/» в браузере, чтобы получить ответ.

Оно работает!! Вы подключили MongoDB к express. Теперь ваша очередь опробовать различные запросы и типы MongoDB.

Ссылка на репо на Github - SharmilaS22 / medium-express-mongodb

Удачного обучения!