Для подключения MongoDB через Mongoose к проекту на Next.js, максимально упрощенный код может выглядеть следующим образом:
1. Установите mongoose, если вы еще этого не сделали:
```
npm install mongoose
```
2. Создайте файл `mongo.js` (можно использовать любое имя), где будет храниться код для подключения к MongoDB:
```jsx
import mongoose from 'mongoose';
const connection = {}; // Используем объект для проверки инициализированного подключения
async function dbConnect() {
// Проверяем, установлено ли уже соединение
if (connection.isConnected) {
return;
}
// Используем новый объект db из Mongoose для установки соединения
const db = await mongoose.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
connection.isConnected = db.connections[0].readyState;
}
export default dbConnect;
```
В этом коде мы используем `async/await` для того, чтобы убедиться, что подключение к базе данных завершится до того, как начнут выполняться другие операции.
Обратите внимание, что здесь мы используем `process.env.MONGODB_URI` для получения строки подключения из переменных среды. Это означает, что вам нужно создать переменную среды с именем `MONGODB_URI` и присвоить ей значение строки подключения к вашей базе данных MongoDB. Это можно сделать в файле `.env.local` в корне вашего проекта Next.js.
3. Импортируйте `dbConnect` в любой файл, где вам нужно выполнить подключение к базе данных, и вызовите его перед выполнением операций с базой данных.
```jsx
import dbConnect from 'path/to/your/mongo';
export async function getServerSideProps(context) {
await dbConnect();
// Ваш код здесь
return {
props: {}, // Возвращаете ваши пропсы
};
}
```
Этот пример иллюстрирует использование `dbConnect` в функции `getServerSideProps`, но вы можете использовать его в любом месте вашего приложения, где нужно выполнить подключение к базе данных MongoDB.
Также учтите, что ваши данные MongoDB должны быть защищены и недоступны в открытом доступе, поэтому перед тем как выкладывать ваш проект в публичный доступ, убедитесь, что ваша строка подключения к MongoDB находится в безопасности и не отображается публично.