Учебник о том, как подключиться к 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 и присоединитесь к нашему Коллективу талантов.