1. Регистрация и настройка MongoDB Atlas
1.1 Регистрация на MongoDB Atlas
- Перейдите на MongoDB Atlas и зарегистрируйтесь.
- Создайте новый кластер:
- Выберите бесплатный план (Shared Cluster).
- Установите настройки региона кластера в зависимости от вашего местоположения.
1.2 Создание базы данных и коллекции
- В панели управления Atlas выберите созданный кластер.
- Перейдите в раздел Database Access и добавьте нового пользователя:
- Установите имя пользователя и пароль.
- Выберите права доступа: Read and Write to any database.
- В разделе Network Access добавьте IP-адрес:
- Для локальной разработки можно добавить доступ с любого IP (
0.0.0.0/0
).
- Для локальной разработки можно добавить доступ с любого IP (
- Перейдите в раздел Database -> Browse Collections:
- Создайте новую базу данных, например,
games-api
, и первую коллекцию, например,games
.
- Создайте новую базу данных, например,
1.3 Получение строки подключения
- В разделе Clusters нажмите кнопку Connect для вашего кластера.
- Выберите Connect your application.
- Скопируйте строку подключения вида:
const uri = 'mongodb+srv://oleksandrbohatyrov:oleksandrbohatyrov@cluster0.crul0.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0'
2. Подключение MongoDB в проекте с использованием Mongoose
2.1 Установка Mongoose
- Установите Mongoose через npm:
npm install mongoose

2.2 Создание подключения к MongoDB
- В основном серверном файле (
index.js
), подключите Mongoose к вашему кластеру MongoDB Atlas.
const mongoose = require('mongoose');
const uri = 'mongodb+srv://oleksandrbohatyrov:oleksandrbohatyrov@cluster0.crul0.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0'
mongoose.connect(uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => console.log('Connected to MongoDB Atlas'))
.catch((error) => console.error('Error connecting to MongoDB Atlas:', error));
- Замените
<username>
,<password>
и <dbname> на ваши значения из строки подключения, которую вы получили в MongoDB Atlas.
3. Создание модели с помощью Mongoose
3.1 Создание схемы для модели
- Создайте папку
models
в проекте. - Внутри папки
models
создайте файлgame.js
.
Пример схемы Mongoose:
const mongoose = require('mongoose');
// Определение схемы для игр
const gameSchema = new mongoose.Schema({
id: {
type: Number,
required: true,
unique: true
},
name: {
type: String,
required: true
},
price: {
type: Number,
required: true
}
});
// Создание модели на основе схемы
module.exports = mongoose.model('Game', gameSchema);
4. Создание API для работы с данными MongoDB
4.1 Маршрут для получения всех записей
В основном серверном файле добавьте маршрут для получения всех игр:
app.get('/games', async (req, res) => {
try {
const games = await Game.find();
res.json(games);
} catch (error) {
res.status(500).json({ message: error.message });
}
});
4.2 Маршрут для добавления новой игры
Добавьте возможность создавать новые записи:
app.post('/games', async (req, res) => {
try {
const lastGame = await Game.findOne().sort({ id: -1 });
const newId = lastGame ? lastGame.id + 1 : 1;
const game = new Game({
id: newId,
name: req.body.name,
price: req.body.price
});
const newGame = await game.save();
res.status(201).json(newGame);
} catch (error) {
res.status(400).json({ message: error.message });
}
});
4.3 Маршрут для обновления записи
Для обновления записи используйте следующий маршрут:
app.put('/games/:id', async (req, res) => {
try {
const game = await Game.findOne({ id: req.params.id });
if (!game) return res.status(404).json({ message: 'Game not found' });
game.name = req.body.name || game.name;
game.price = req.body.price || game.price;
const updatedGame = await game.save();
res.json(updatedGame);
} catch (error) {
res.status(400).json({ message: error.message });
}
});
4.4 Маршрут для удаления записи
Для удаления записи по id
:
app.delete('/games/:id', async (req, res) => {
try {
const game = await Game.findOne({ id: req.params.id });
if (!game) return res.status(404).json({ message: 'Game not found' });
await game.remove();
res.json({ message: 'Game deleted' });
} catch (error) {
res.status(500).json({ message: error.message });
}
});
5. Запуск проекта
node .