Database(2)

๊น€์œ ๋‹ดยท2024๋…„ 2์›” 10์ผ

html/css/js

๋ชฉ๋ก ๋ณด๊ธฐ
12/13
post-thumbnail

๐Ÿ‘จโ€๐Ÿ’ป ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐฑ์—”๋“œ์—์„œ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

์ƒ๊ฐํ•ด๋ณด์ž ์™œ ํ”„๋ก ํŠธ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด ์•ˆ๋ ๊นŒ?
๊ทธ ์ด์œ ๋Š” ๋ธŒ๋ผ์šฐ์ €์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๋กฌ์—์„œ๋Š” f12๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ”„๋ก ํŠธ ์ฝ”๋“œ๊ฐ€ ๋ณด์ธ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋ก ํŠธ ์ฝ”๋“œ๋Š” ๋ฐฉ๋ฌธ์ž๊ฐ€ ์ˆ˜์ •์„ ํ•ด๋„ ๋””๋ฒ„๊น…์šฉ์ด๊ธฐ์— ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ๋Š” ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
์ฆ‰ ํ…Œ์ด๋ธ”(or ์ปฌ๋ ‰์…˜) ์‚ญ์ œ์™€ ๊ฐ™์€ ํ•ดํ‚น์„ ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿ‘จโ€๐Ÿ’ป MongoDB Node Driver

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ด€๋ จ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šดํ•ด๋ณด์ž.

npm install mongodb

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ํ„ฐ๋ฏธ๋„์— ์ž‘์„ฑํ•˜๋ฉด monogodb node driver ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋œ๋‹ค.

๐Ÿ‘จโ€๐Ÿ’ป ๋ฐฑ์—”๋“œ์—์„œ db ์—ฐ๊ฒฐํ•˜๊ธฐ

์šฐ์„  db ์—ฐ๊ฒฐ์„ ๋‹ด๋‹นํ•˜๋Š” ์ƒˆ๋กœ์šด jsํŒŒ์ผ์ธ database.js๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ ์•ˆ์— ๋‚ด์šฉ์„ ์ ์—ˆ๋‹ค.

์ „์ฒด ์ฝ”๋“œ๋Š”

const mongodb = require("mongodb");

const MongoClient = mongodb.MongoClient;

let database;

async function connect() {
	
	const client = await MongoClient.connect("mongodb://localhost:27017");
	//๋ชฝ๊ณ ๋””๋น„๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” url์ด๋ผ๊ณ  ํ•จ / localhost๊ด€๋ จ ๋‚ด์šฉ์ด๋ผ goorm์—์„œ ๋จนํž์ง€๋Š” ์˜๋ฌธ
	// ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ
	database = client.db("blog");
	// ์„œ๋ฒ„์˜ ๋ธ”๋กœ๊ทธ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์™€ ์‹ค์ œ๋กœ ํ†ต์‹ (๋ชฝ๊ณ db shell)
	
}

function getDb(){
	if(!database){
		throw { message: "Database connection not established!" };
	}
	return database;
}

// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— connect()๊ฐ€ ๋จผ์ € ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•จ

module.exports = {
	connectToDatabase: connect,
	getDb: getDb
};

// ์ด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•  ์ด๋ฆ„ : ์ด ํŒŒ์ผ์—์„œ์˜ ์ด๋ฆ„
//()๊ฐ€ ์—†๋Š” ์ด์œ ๋Š” ์ง€๊ธˆ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ์— ์—†๋‹ค.

์ด๊ณ  ์„ค๋ช…์„ ํ•ด๋ณด์ž๋ฉด.

const mongodb = require("mongodb");

const MongoClient = mongodb.MongoClient;

์œ„์—์„œ ์„ค๋ช…ํ•œ mongodb node driver๋ฅผ ๊ฐ€์ ธ์™€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

let database;

async function connect() {
	
	const client = await MongoClient.connect("mongodb://localhost:27017");
	//๋ชฝ๊ณ ๋””๋น„๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” url์ด๋ผ๊ณ  ํ•จ / localhost๊ด€๋ จ ๋‚ด์šฉ์ด๋ผ goorm์—์„œ ๋จนํž์ง€๋Š” ์˜๋ฌธ
	// ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ
	database = client.db("blog");
	// ์„œ๋ฒ„์˜ ๋ธ”๋กœ๊ทธ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์™€ ์‹ค์ œ๋กœ ํ†ต์‹ (๋ชฝ๊ณ db shell)
	
}

์ด๊ฑด db์™€ ์—ฐ๊ฒฐํ•˜๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์‚ฌ์‹ค ์ด๋ถ€๋ถ„์€ ๊นŠ์ด๊ฐ€ ์žˆ๋Š” ๋‚ด์šฉ์ธ์ง€ ์ž์„ธํžˆ ์„ค๋ช…์„ ํ•ด์ฃผ์ง€๋Š” ์•Š์•˜๋‹ค.
ํ•จ์ˆ˜์—์„œ ์ฒซ ๋ฒˆ์งธ ์ค„์€ ์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ์„ ๋‘ ๋ฒˆ์งธ ์ค„์€ ์„œ๋ฒ„์˜ ๋ธ”๋กœ๊ทธ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์™€ ์‹ค์ œ๋กœ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค.


function getDb(){
	if(!database){
		throw { message: "Database connection not established!" };
	}
	return database;
}

์ด๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ ธ์™€๋Š” ํ•จ์ˆ˜๋กœ์„œ ์ด ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— connect()๊ฐ€ ๋จผ์ € ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•œ๋‹ค.


module.exports = {
	connectToDatabase: connect,
	getDb: getDb
};
.

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ํŒŒ์ผ๋“ค์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์„ module.exports๋กœ ํ‘œ์‹œํ•˜๋Š”๋ฐ,
ํ˜•์‹์€ ์ด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•  ์ด๋ฆ„ : ์ด ํŒŒ์ผ์—์„œ์˜ ์ด๋ฆ„ ์ด๊ณ  ()๊ฐ€ ์—†๋Š” ์ด์œ ๋Š” ์ง€๊ธˆ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ์— ์—†๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ํŒŒ์ผ, database.js๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํŒŒ์ผ, app.js์—์„œ๋Š”

const db = require("./data/database");// db ์š”์ฒญ
db.connectToDatabase().then(function () {
	app.listen(3000);
})

require๋กœ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€์„œ ๋ฐ‘์—์„œ connectToDatabase() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ด์„œ ์—ฐ๊ฒฐํ•˜๋ฉด ๋œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๋ฏธ์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ์›น์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๋„๋ก ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ‘จโ€๐Ÿ’ป ๋ฌธ์ œ์˜ ์‹œ์ž‘

์ด๋Ÿฌ๊ณ  ctrl+c๋ฅผ ํ†ตํ•ด nodemon์„ ์ž ์‹œ ์ค‘์ง€ํ–ˆ๋‹ค๊ฐ€ npm start๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ๋˜์•ผ ํ•˜๋Š”๋ฐ... ์„œ๋ฒ„๊ฐ€ ์•ˆ์—ด๋ฆฐ๋‹ค. ์–ด์ œ๊นŒ์ง€ ์ž˜ ์—ด๋ฆฐ๊ฑธ๋กœ ๋ด์„œ๋Š” ๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•œ ์ฝ”๋“œ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹๊นŒ....

์˜ค๋ฅ˜๋ฅผ ์ž์„ธํžˆ ๋ณด๋‹ˆ ๋†€๋ž๊ฒŒ๋„ ์–ด์ œ ์„ค์น˜ํ•œ mongodb node driver์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค.

ํ•˜ํ•ณ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฉด ์–ด๋–ป๊ฒŒ ์†๋ณด๊ฒ ๋Š”๋ฐ.. ๋‹ค์šด๋ฐ›์€ ํŒจํ‚ค์ง€๋ฅผ ๊ฑธ๊ณ  ๋„˜์–ด์ง€์‹œ๋ฉด.... ๊ณค๋ž€ํ•œ๋ฐ...

๋‹คํ–‰ํžˆ ๋‚˜์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์„ ์ธํ„ฐ๋„ท์—์„œ ์ฐพ์•˜๋‹ค.

https://www.mongodb.com/community/forums/t/unable-to-connect-to-mongodb-cluster-deployed-on-mongodb-cloud-using-node-js/245600

๊ทธ๊ณณ์˜ ๋‹ต๋ณ€์„ ๋ณด๋‹ˆ ๋ฒ„์ „ ์ฐจ์ด๋กœ ์ธํ•œ ํ”ํ•œ ๋ฌธ์ œ๋ผ๊ณ  ๋‚˜์™€์žˆ๋‹ค.
์‚ฌ์‹ค mongodb๋Š” ์•„๋งˆ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ๊น”๋ ธ์„ ๊ฒƒ์ด๊ณ  node.js ๋ฒ„์ „ ๋ฌธ์ œ์ธ๊ฐ€..?
๋ฒ„์ „์„ ํ™•์ธ์„ ํ•ด๋ณด๋‹ˆ

v10.16.3

๋ฒ„์ „์ด ๋‚˜์™”๋‹ค. ์Œ... ใ…Ž

๊ทธ๋Ÿผ Node.js ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•ด๋ด…์‹œ๋‹ค.(์šฐ์งธ ๊ฐ•์˜๋ณด๋‹ค ํ™˜๊ฒฝ ์˜ค๋ฅ˜ ๊ณ ์น˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“œ๋Š” ๊ฒƒ ๊ฐ™์ง€..?)

https://happycodingdiary.tistory.com/95

์œ„์˜ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ node.js ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธ ํ•˜๋ ค๊ณ  node.js๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์žˆ๋Š”๋ฐ

30%์—์„œ ์•ˆ์›€์ง์ธ๋‹ค.... ํ•˜ํ•ณ ํ•˜ํ•ณใ…Ž
์ด๋Ÿด ๋•Œ๋งˆ๋‹ค ๊ตฐ๋Œ€์—์„œ ์ด๋Ÿฐ ์›น๊ฐœ๋ฐœ ๋ง๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ํ• ๊นŒ ํ˜„ํƒ€๊ฐ€ ์˜ต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์•ˆ์— ์‚ญ์ œ ๋ถˆ๊ฐ€๋Šฅํ•  ๋“ฏ ๋ญ ์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€

๋А๋‚€์ 

ํ”„๋ก ํŠธ๋Š” ๊ดœ์ฐฎ์•˜๋Š”๋ฐ ๋ฐฑ์—”๋“œ๋ฅผ ํ•˜๋ฉด์„œ ๊ตฐ๋Œ€์—์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์˜ ํ•œ๊ณ„๋ฅผ ์ข€ ๋А๋ผ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
๊ตฐ๋Œ€์—์„œ ์›น ๊ฐœ๋ฐœ, ์•ฑ ๊ฐœ๋ฐœ์„ ๋งŒ๋“ค์–ด์„œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‹ค์ œ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์„œ๋น„์Šค๊นŒ์ง€ ํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์˜ ๋ชฉํ‘œ์˜€๋Š”๋ฐ, ๊ทธ๊ฒŒ ๊ตฐ๋Œ€์—์„œ ๊ฐ€๋Šฅํ•œ ์ผ์ธ๊ฐ€ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ƒ๊ฐํ•ด๋ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.
๊ทธ๋Ÿผ 20000.

๐Ÿ‘จโ€๐Ÿ’ป MEMO

  • ์ฟผ๋ฆฌ๋Š” ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • npm start๋กœ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹œ์ž‘
profile
์ž˜ํ•˜์ง„ ๋ชปํ• ์ง€์–ธ์ • ๊พธ์ค€ํžˆ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž:)

0๊ฐœ์˜ ๋Œ“๊ธ€