데이터 조회
Clusters - Browse Collection 으로 데이터 조회 가능.
데이터 생성
Create Database 클릭해서 생성 가능.
1) database (프로젝트) 이름
2) collection(폴더) 이름
document 는 파일
Insert Document 이걸로 파일(데이터들) 생성.
Next.js 환경에서 MongoDB 연결
1) 몽고DB 라이브러리 설치
npm install mongodb
2) DB에 접속하기
- 서버 컴포넌트
서버 컴포넌트 안에다가
MongoClient 써주고 import.
const client = await MongoClient.connect('DB접속URL~~', { useNewUrlParser: true })
const db = client.db("forum")
그리고, 이 코드를 컴포넌트 안에다가 써줘야함.
하단에는 생성해줬던 데이터베이스의 이름을 적어준 것.
그 다음,
db.collection('post').find()
db.collection('post').find() 를 적어줌.
= post 컬렉션에 있는 모든 데이터 출력해준다.
3) DB접속 URL 위치 찾아보기.
Cluster - Connect 접속
- Connect your application 에 있는 Drivers 클릭
그 다음 2번에 있는 URL 복사
그리고 DB 에 그대로 복사해서 집어넣어주면 됨.
const client = await MongoClient.connect('DB접속URL~~', { useNewUrlParser: true })
const db = client.db("forum")
**DB 접속명하고 비번으로 수정줘야함
+ await 갖다 쓰려면 컴포넌트에 async 붙여주기.
4) 새로고침 할 땜마다 코드 실행되지 않도록 옮겨주기.
= app 폴더 바깥에다 폴더 하나 생성.
DB 연결 코드는 Next.js 서버 띄울 때 1번만 실행되는게 좋음.
app 폴더 바깥에다 폴더( util ) 하나 생성.
util 폴더 안에다가 database.js 파일 생성
database.js 폴더 안에다가 코드 옮겨주기.
import { MongoClient } from 'mongodb'
const url = 'DB접속URL~~'
const options = { useNewUrlParser: true }
let connectDB
if (process.env.NODE_ENV === 'development') {
if (!global._mongo) {
global._mongo = new MongoClient(url, options).connect()
}
connectDB = global._mongo
} else {
connectDB = new MongoClient(url, options).connect()
}
export { connectDB }
connectDB 변수에 넣고 갖다 쓰면 됨.
5) 그리고 다시 page.js 로 가서 export 한 connectDB 변수 갖고온다.
- import 필수
import { connectDB } from "@/util/database";
import { MongoClient } from "mongodb";
export default async function Home() {
const client = await connectDB;
const db = client.db("forum");
return <div>asdf</div>;
}
이렇게 갖고와줌.
const client = await connectDB;
const db = client.db("forum");
client 에 넣어줬던 내용이 변수(connectDB) 로 대체됨.
그리고 DB 에 있는 데이터 꺼내오려면
await db.ccollection('post').find().toArray()
를 아래에다가 써준다.
let result = await db.ccollection('post').find().toArray()
이걸 변수에 저장해서도 출력해서 확인 가능.
= 터미널로 확인 가능
*아까 꺼내올 때 써준 코드랑 차이가 있음.
db.collection('post').find()
6)
const client = await connectDB;
const db = client.db("forum");
3줄을 2줄로
축약 방법 알아보기.
let client = await connectDB;
const db = client.db('forum');
let result = await db.collection('post').find().toArray();
이렇게 3 줄을
let db = (await connectDB).db('forum');
let result = await db.collection('post').find().toArray();
두 줄로 축약해서 사용해줄 수 있음.
'> 메모 > Next.js' 카테고리의 다른 글
[Next.js] 글 작성 기능 만드는 방법 (5) | 2024.11.14 |
---|---|
[Next.js] 상세 페이지 만드는 방법 (0) | 2024.11.13 |
[Next.js] 글 목록 조회 (리스트 페이지) 만드는 방법 (2) | 2024.11.13 |
[Next.js] 리액트와 동일한 map () / 컴포넌트 / props (1) | 2024.11.12 |
헷갈리는 GET, POST 쉽게 정의 (1) | 2024.11.07 |