mongoose - это структура, облегчающая взаимодействие с MongoDB. На самом деле, вы, по сути, никогда не хотите выполнять все проверки, кастинг и логику самостоятельно, так что зачем изобретать велосипед.
А поскольку вы новичок, не бойтесь фреймворков. Есть много полезных структур для многих областей бэкэнда и внешнего интерфейса, чтобы облегчить вам жизнь.
Статья, которой вы поделились, не требует пояснений, но я подытожу только часть базы данных для вас (я не буду углубляться в ваш код, никакая работа осла. Остальное зависит от вас ):
1) Прежде всего установите мангуст.
npm install mongoose
В статье есть --save
, который больше не нужно добавлять, поскольку "npm install
сохраняет все указанные пакеты в зависимости по умолчанию." ( ref. )
2) , чтобы иметь возможность доступа и использования mongoose , вам необходимо импортировать его способом узла, то есть require()
.
const express = require(‘express’)
const mongoose = require(“mongoose”);
const bodyParser = require(‘body-parser’);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
А для чего здесь анализатор тела ?
При работе с базой данных в экспрессе вы рано или поздно столкнетесь с ошибками типа this .
и причина, по которой мы нуждаемся в этом, лучше всего объясняется в этом ответе .
Кроме того, в последних версиях Express теперь имеется собственный анализатор тела, поэтому вы можете использовать app.use(express.json())
вместо app.use(bodyParser.json())
.
Важно: body-parser должен быть перед вашими маршрутами.
3) использование mongoose.connect(url)
.
url
Аргумент - это то, что вы найдете в MongoDB Atlas . :
Расположение: вкладка кластеров -> подключиться -> подключить ваше приложение -> драйвер node.js
Что дает вам, что-то вроде этого:
mongodb+srv://<user>:<password>@,cluster>.mongodb.net/test?retryWrites=true&w=majority
Важно: вы используете пользователя и пароль пользователя, которого вы создали на вкладке Доступ к базе данных, а не свой собственный пользователя и пароль.
Вы можете настроить переменные среды для защиты конфиденциальных и изменяемых данных. Но я предпочитаю использовать config.js
для простоты, который обычно находится в корне приложения.
Не только вы можете защитить их (например, для использования .gitignore
), но и легко изменить их, поскольку есть переменные, которые могут изменяться из одной среды в другую, делая их доступными в одном месте и их легко найти вместо ищите их, чтобы изменить во всем вашем приложении.
Для .env
файлового подхода прочитайте эту статью .
Важно: на случай, если вы захотите поместить свой код в github или где-либо в сети, и по этой причине мы используем config.js
, не забудьте добавить этот файл в .gitignore
, чтобы избежать такой чувствительной данные пропускаются и раскрываются другим пользователям в Интернете.
в config.js
вы можете сделать это:
exports.username = 'your user';
exports.pass = 'your pass';
exports.myCluster = 'your cluster's name';
Затем импортируйте их так:
const { username, pass, myCluster } = require('./config');
<- путь может быть другим для вас! </p>
Совет: Вы можете использовать обратную галочку (` `
), чтобы легко вставить эти переменные для const url
, через интерполяцию .
То есть:
const url = `mongodb+srv://${username}:${password},${myCluster}.mongodb.net/test?retryWrites=true&w=majority`
Важно: убедитесь, что белый список ваш IP со стороны MongoDB (атлас), в противном случае вы получите ошибку соединения.
Под безопасностью : Доступ к сети -> Белый список IP
Вы можете использовать 0.0.0.0/0
для внесения в белый список всех IP-адресов.
Кроме того, при использовании VPN ваш IP тоже изменится.
4) последний, но не менее важный , после подключения к базе данных вам необходимо определить вашу схему :
const moviesSchema = new mongoose.Schema({
title: String,
year: Number,
rating: Number
});
И
const Movies = mongoose.model(“Movies”, moviesSchema);
Подсказка: Распространенная ошибка, которую делают многие новички, заключается в том, что они забыли использовать new
:
new mongoose.Schema({...})
Если вы хотите создать свою модель в отдельном файле (что является наилучшей практикой), вам необходимо изменить const Movies
так:
module.exports = mongoose.model(“Movies”, moviesSchema);
Не забудьте добавить const mongoose = require('mongoose');
в этот отдельный файл модели js.
И куда бы вы ни захотели использовать эту модель, вы импортируете так:
const Movies= require('../models/movies');
(путь может отличаться для вашего приложения)
Остальное, друг мой, зависит от тебя.Что вы хотите сделать со своей базой данных и как ее использовать.
Примечание для других: я уделял этому столько времени и ума, как писал.Пожалуйста, если вы видите что-то не так или думаете, что можете что-то добавить, смело редактируйте и улучшайте мой ответ.