پرش به مطلب اصلی

اتصال Nextjs به دیتابیس


در این بخش می خواهیم آموزش نحوه اتصال Nextjs به دیتابیس را در هاست نکست جی اس Nextjs به شما آموزش دهیم.

برای اتصال دیتابیس به سرویس Nextjs خود، در صورتی که از Pages router استفاده مینمایید، ابتدا در مسیر زیر میبایست فایل db.js را ایجاد نموده و سپس با توجه به نوع دیتابیس خود، فایل ایجاد شده را کانفیگ نمایید.

/app/pages/api/

اتصال به دیتابیس Mysql

برای اتصال دیتابیس Mysql به سرویس Nextjs، ابتدا میبایست پکیج mysql2 را نصب نمایید:

npm install mysql2

سپس فایل db.js را در مسیر /app/pages/api/ مانند نمونه زیر تکمیل نمایید:

import mysql from 'mysql2/promise';

const dbConfig = {
uri: 'mysql://USER:PASS@HOST:PORT/DB-NAME', // طبق مشخصات دیتابیس خود تکمیل شود.
};

let connection;
async function connectToDatabase() {
try {
if (connection) {
return connection;
}
connection = await mysql.createConnection(dbConfig.uri);
console.log('Connected.');
return connection;
} catch (error) {
console.error('Error:', error);
throw error;
}
}
export default connectToDatabase;

حال میتوانید با استفاده از کد زیر در برنامه خود، اتصال دیتابیس به برنامه را بررسی نمایید:

import connectToDatabase from './api/db.js';

export default function Home({ isConnectedToDB }) {
return (
<div>
<h1>DB connection</h1>
<p>Connected to MySQL: {isConnectedToDB ? 'Yes' : 'No'}</p>
</div>
);
}

export async function getStaticProps() {
let isConnectedToDB = false;

try {
await connectToDatabase();
isConnectedToDB = true;
} catch (error) {
isConnectedToDB = false;
}

return {
props: {
isConnectedToDB,
},
};
}

اتصال به دیتابیس Mariadb

برای اتصال دیتابیس Mariadb به سرویس Nextjs، ابتدا میبایست پکیج mariadb را نصب نمایید:

npm install mariadb

سپس فایل db.js را در مسیر /app/pages/api/ مانند نمونه زیر تکمیل نمایید:

import mariadb from 'mariadb';

const pool = mariadb.createPool({
host: 'HOST',
port: PORT,
user: 'USER',
password: 'PASS',
database: 'DB-NAME',
});

async function connectToDatabase() {
let connection;

try {
connection = await pool.getConnection();
console.log('Connected.');
return connection;
} catch (error) {
console.error('Error:', error);
throw error;
} finally {
if (connection) connection.release();
}
}

export default connectToDatabase;

حال میتوانید با استفاده از کد زیر در مسیر /app/pages/index.js اتصال دیتابیس به برنامه را بررسی نمایید:

import connectToDatabase from './api/db.js';
export default function Home({ isConnectedToDB }) {
return (
<div>
<h1>DB connection</h1>
<p>Connected to MariaDB: {isConnectedToDB ? 'Yes' : 'No'}</p>
</div>
);
}

export async function getStaticProps() {
let isConnectedToDB = false;

try {
const connection = await connectToDatabase();
isConnectedToDB = true;
} catch (error) {
isConnectedToDB = false;
}

return {
props: {
isConnectedToDB,
},
};
}

اتصال به دیتابیس PostgreSQL

برای اتصال دیتابیس PostgreSQL به سرویس Nextjs، ابتدا میبایست پکیج pg را نصب نمایید:

npm install pg

سپس فایل db.js را در مسیر /app/pages/api/ مانند نمونه زیر تکمیل نمایید:

import { Pool } from 'pg';

const pool = new Pool({
host: 'HOST',
port: PORT,
user: 'USER',
password: 'PASS',
database: 'DB-NAME',
});

async function connectToDatabase() {
let client;

try {
client = await pool.connect();
console.log('Connected.');
return client;
} catch (error) {
console.error('Error:', error);
throw error;
} finally {
if (client) client.release();
}
}

export default connectToDatabase;

حال میتوانید با استفاده از کد زیر در مسیر /app/pages/index.js اتصال دیتابیس به برنامه را بررسی نمایید:

mport connectToDatabase from './api/db.js';

export default function Home({ isConnectedToDB }) {
return (
<div>
<h1>DB connection</h1>
<p>Connected to PostgreSQL: {isConnectedToDB ? 'Yes' : 'No'}</p>
</div>
);
}

export async function getStaticProps() {
let isConnectedToDB = false;

try {
const connection = await connectToDatabase();
isConnectedToDB = true;
} catch (error) {
isConnectedToDB = false;
}

return {
props: {
isConnectedToDB,
},
};
}

اتصال به دیتابیس SQL Server

برای اتصال دیتابیس SQL Server به سرویس Nextjs، ابتدا میبایست پکیج mssql را نصب نمایید:

npm install mssql

سپس فایل db.js را در مسیر /app/pages/api/ مانند نمونه زیر تکمیل نمایید:

import { ConnectionPool } from 'mssql';

const config = {
user: 'sa',
password: 'PASS',
server: 'HOST',
database: 'DB-NAME',
port: PORT,
options: {
encrypt: false,
trustServerCertificate: false,
},
};

const pool = new ConnectionPool(config);

async function connectToDatabase() {
try {
await pool.connect();
console.log('Connected.');
return pool;
} catch (error) {
console.error('Error:', error);
throw error;
}
}

export default connectToDatabase;

حال میتوانید با استفاده از کد زیر در مسیر /app/pages/index.js اتصال دیتابیس به برنامه را بررسی نمایید:

import connectToDatabase from './api/db.js';

export default function Home({ isConnectedToDB }) {
return (
<div>
<h1>DB connection</h1>
<p>Connected to SQL Server: {isConnectedToDB ? 'Yes' : 'No'}</p>
</div>
);
}

export async function getStaticProps() {
let isConnectedToDB = false;

try {
const connection = await connectToDatabase();
isConnectedToDB = true;
} catch (error) {
isConnectedToDB = false;
}

return {
props: {
isConnectedToDB,
},
};
}

اتصال به دیتابیس MongoDB

برای اتصال دیتابیس MongoDB به سرویس Nextjs، ابتدا میبایست پکیج mongodb را نصب نمایید:

npm install mongodb

سپس فایل db.js را در مسیر /app/pages/api/ مانند نمونه زیر تکمیل نمایید:

import { MongoClient } from 'mongodb';

const uri =
mongodb://USERNASME:PASSWORD@MONGO_SERVER_URL:MONGO_PORT/?authSource=admin;

let client;

async function connectToDatabase() {
try {
if (!client) {
client = new MongoClient(uri, {});
await client.connect();
}

console.log('Connected.');
return client.db();
} catch (error) {
console.error('Error:', error);
throw error;
}
}

export default connectToDatabase;

حال میتوانید با استفاده از کد زیر در مسیر /app/pages/index.js اتصال دیتابیس به برنامه را بررسی نمایید:

import connectToDatabase from './api/db.js';

export default function Home({ isConnectedToDB }) {
return (
<div>
<h1>DB connection</h1>
<p>Connected to MongoDB: {isConnectedToDB ? 'Yes' : 'No'}</p>
</div>
);
}

export async function getStaticProps() {
let isConnectedToDB = false;

try {
const db = await connectToDatabase();
isConnectedToDB = db ? true : false;
} catch (error) {
isConnectedToDB = false;
}

return {
props: {
isConnectedToDB,
},
};
}

اتصال به دیتابیس Redis

برای اتصال دیتابیس Redis به سرویس Nextjs، ابتدا میبایست پکیج ioredis را نصب نمایید:

npm install ioredis

سپس فایل db.js را در مسیر /app/pages/api/ مانند نمونه زیر تکمیل نمایید:

import Redis from 'ioredis';

const redisConfig = {
host: 'HOST',
port: PORT,
password: 'PASS',
};

const redisClient = new Redis(redisConfig);

async function connectToDatabase() {
try {
if (!redisClient.status || redisClient.status === 'closed') {
await redisClient.connect();
console.log('Connected.');
} else {
console.log('Already connected to Redis!');
}
} catch (error) {
console.error('Error:', error);
throw error;
}
}

export default connectToDatabase;

حال میتوانید با استفاده از کد زیر در مسیر /app/pages/index.js اتصال دیتابیس به برنامه را بررسی نمایید:

import connectToDatabase from './api/db';

export default function Home({ isConnectedToDB }) {
return (
<div>
<h1>DB connection</h1>
<p>Connected to Redis: {isConnectedToDB ? 'Yes' : 'No'}</p>
</div>
);
}

export async function getStaticProps() {
let isConnectedToDB = false;

try {
const connection = await connectToDatabase();
isConnectedToDB = true;
} catch (error) {
isConnectedToDB = false;
}

return {
props: {
isConnectedToDB,
},
};
}