Учебник о том, как подключиться к MongoDB с помощью Mongoose

MongoDB — это база данных NoSQL для хранения данных. Используя узел, вы можете создать сервер, который подключается к удаленному серверу MongoDB, и создавать коллекции баз данных для хранения различных типов данных.

Mongoose упрощает подключение к MongoDB и имеет встроенную поддержку моделей и типов данных.

Первый шаг — установить Mongoose и другие зависимости. Ниже мой файл package.json со всеми зависимостями в этом примере:

{
"name": "node-mongoose",
"version": "1.0.0",
"description": "",
"main": "app.js",
"dependencies": {
"bcryptjs": "^2.4.3",
"body-parser": "^1.20.0",
"ejs": "^3.1.8",
"express": "^4.18.1",
"express-session": "^1.17.3",
"mongoose": "^6.4.3",
"nodemon": "^2.0.18"
},
"scripts": {
"start": "nodemon app.js",
"example": "nodemon example.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}

Просто скопируйте этот файл и запустите npm install, чтобы запустить сервер с npm run start в терминале Node.js.

const mongoose = require('mongoose')

После импорта Mongoose вы можете создать схему или модель.

const postSchema = new mongoose.Schema({
    title: {
        type: String,
        required: true
    },
    content: {
        type: String,
        required: true
    }
})
module.exports = mongoose.model('Post', postSchema)

Создав эту модель, вы можете читать, писать и обновлять документы внутри этой коллекции. Название коллекции будет храниться как «сообщения» в базе данных.

Чтобы подключиться к базе данных MongoDB, вам потребуется строка подключения, которая предоставляется на вашем хосте MongoDB Atlas. Эта строка подключения включает имя базы данных и пароль, поэтому обязательно сохраните ее в безопасном месте в файле .env.

const CONNECT_URL = "" // Your connection string
mongoose
.connect(CONNECT_URL, { useNewUrlParser: true, useUnifiedTopology: true })
.then((result) => {
// If connection is successful, start the server.
app.listen(process.env.PORT || 8000);
})
.catch((error) => {
console.log(error);
});

После добавления соединения вы можете начать добавлять маршруты GET и POST для обработки различных запросов.

Для обработки маршрутизации я буду использовать экспресс.

const express = require("express");
const app = express();

Для рендеринга страниц в этом примере я буду использовать EJS в качестве шаблонизатора. Установите EJS с помощью npm, затем добавьте EJS в качестве механизма шаблонов по умолчанию.

app.set("view engine", "ejs");
app.set("views", "views");

Я создам папку с именем views в моей основной папке и в эту папку я добавлю файл posts.ejs. На домашней странице я буду получать сообщения из коллекции базы данных и отображать их в шаблоне posts.ejs.

app.get("/", (req, res) => {
 
    const Post = mongoose.model("Post", postSchema);
    Post.find().then(posts => {
        res.render("posts", {posts: posts})
    })
})

Массив сообщений будет передан в шаблон posts.ejs, и в этом шаблоне вы можете использовать специальный синтаксис для отображения сообщений.

<% posts.map(post => { %>
    <div><%= post.title %></div>
<% }) %>

Полный файл выглядит так:

<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Home</title>
</head>
<body>
<h2>Posts</h2>
<% posts.map(post => { %>
<div><%= post.title %></div>
<% }) %>
</body>
</html>

Чтобы выполнить JavaScript в EJS, этот синтаксис открывает и закрывает код JavaScript и выполняет код внутри:

<% %>

Для отображения значений переменной JavaScript используется следующий синтаксис:

<%= %>

Наконец, если вы хотите создать файлы шаблонов, вы визуализируете их с помощью этого тега:

<%-  %>

Исходный код

Вот оно. Спасибо за чтение.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.