개발/사이드 프로젝트 1. Trading Platform

MongoDB - Node.js 연동

sihoonchris 2024. 4. 13. 20:11

어디까지나 내 기준이기는 하지만

이전에 했었던 MySQL - Node.js 연동 보다는 훨씬 더 어려웠다.

 

나는 학원에서든, 회사에서든 RDBMS만 배우고 다뤄왔기 때문에

NoSQL인 MongoDB는 이번이 처음이었고, 당연히 Mongoose도 이번이 처음이었다.

모르는 내용이 많아서 구글링을 많이 해야 했는데

구버전으로 작성된 내용들이 많아서 적잖이 헤맸다.

 

마음 같아서는 작업을 하면서 마주쳤던 모든 어려움들과 해결 과정들을

전부 기록으로 남기고 싶었지만, 그러기에는 시행착오가 너무 많았다.

그리고 기록하면서 작업을 진행하자니 집중이 분산되어 개발에 힘을 쏟을 수 없었다.

그래서 그냥 "DB와 Server를 어떻게 연동시켰냐"만 기록으로 남겼다.

솔직히 귀찮았다.


들어가기 전에

버전 정보

     (1) MongoDB

               "version": "7.0.5",

     (2) Node.js

               v20.11.0

     (3) Vue3

               @vue/cli 5.0.8

 

 

시작!

우선 데이터부터 만듦 (* MongoDB Compass)

 

app.js에서 Connection 코드 작성

- Express서버가 실행되면 MongoDB와 연결됨

- 예정 : 쿼리 실행시에만 DB에 접속하도록 코드 수정하기

 

모델 생성

- mongoose.model(ModelName, Schema, CollectionName)

- 왜 인지는 모르겠지만 쿼리문을 실행시킬 때마다 CollectionName이 'portfolios'로 들어가서, 이것 때문에 꽤나 애를 먹었다. 원인은 못찾았지만 해결은 했다 ; model()함수에 arguments로 CollectionName 추가 

 

데이터 전송

-  " const e = Portfolio.find({}) " 와  " console.log() "는 없어도 된다. 쿼리 실행 결과 보려고 추가해놓은 코드다 (정상작동 확인 후 지웠다.)

 

 

결론

MongoDB (DB) => Node.js (Back) => Vue3 (Front) 로 데이터 가져오기 성공

데이터는 잘 받아지는데, 차트가 그려지지 않는다 - 아마 Lifecycle Hook 관련 이슈일 것 같은데 이건 나중에 알아보자

 


 

참고 자료/문헌)

 

덕분에 어찌저찌 잘 했습니다.

이 은혜는 잊을 때까지 기억할게요

 

(1) mongodb - node.js 연동 전반

https://gnaseel.tistory.com/30

 

[ MEVN 스택 ] 4. Mongoose DB + Express 연결하기 (2)

1. vsCode에 vue, express 프로젝트를 생성한다. 2. vue와 express를 연동한다. 3. Mongoose DB를 생성한다. (로컬이 아닌 클라우드 서비스 이용할 예정) 4. 웹 프로젝트와 DB를 연동한다. - 현재 포스트 5. Google Cl

gnaseel.tistory.com

https://gr-st-dev.tistory.com/1171

 

[JS] node.js와 Mongodb 연동하기

Node.js와 MongoDB 연동하기 개요 이번 포스팅에서는 Node.js와 MongoDB를 연동하는 방법에 대해 알아보겠습니다. MongoDB는 NoSQL 데이터베이스이며, Node.js는 서버 사이드 자바스크립트 런타임입니다. 이

gr-st-dev.tistory.com

https://velog.io/@hsw1606/MongoDB-ODM-%EC%9D%B8-Mongoose-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

MongoDB ODM 인 Mongoose 사용하기

MongoDB MongoDB는 NoSQL데이터베이스이며 문서지향(Document-Oriented)적인 데이터베이스이다. 관계형DB가 아니기 때문에 고정된 Schema나 JOIN이 존재하지 않으며 데이터 구조가 key-value 형식으로 이루어져

velog.io

https://velog.io/@moongq/mongoose.find

 

mongoose.find()

오늘은 mongoose의 Query에 대한 소소한 정보들을 정리해보려 합니다. "아~ 그랬구나~" 하고 조금더 깊이 이해하게 되는 시간이 되면 좋겠습니다.Mongoose는 두가지의 find() 함수를 가지고 있습니다. Mode

velog.io

https://velog.io/@wlwl99/Next.js-MongoDB%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0

 

Next.js - MongoDB에서 데이터 가져오기

이제 홈 화면에서 더미 데이터가 아닌 MongoDB 데이터베이스에 있는 데이터들을 가져와서 보여주도록 하자. 이 작업 또한 새로운 API 라우트를 생성하고 handler 함수를 작성하여, API를 이용해 데이

velog.io

https://velog.io/@dev_cecy/NODE.JS-MONGO-DB-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0-FEAT.-EXPRESS-MONGOOSE

 

[NODE.JS] MONGO DB 연동하기 (FEAT. EXPRESS & MONGOOSE )

서버를 연동해서 진행해보고 싶은 프로젝트가 생겼다. 그래서 간단하게 서버를 만들어보려고한다.node.js는 웹브라우저에서만 사용되던 javascript를 웹 외부에서도 실행할 수 있는 환경을 제공해

velog.io

(2) DB 설정

https://stackoverflow.com/questions/57337218/how-to-connect-to-specific-database-with-mongoose-and-node

 

How to connect to specific database with Mongoose and node?

I'm learning how to use Mongoose and there's something I don't understand - how can I connect to specific database and collection in my cluster? I have 5 different databases and each database have...

stackoverflow.com

(3) 에러 해결

https://www.inflearn.com/questions/814735/model-findone-no-longer-accepts-a-callback-%EC%98%A4%EB%A5%98

 

model.findone() no longer accepts a callback 오류 - 인프런

findOne()도 save()와 마찬가지로 몽구스 5.0부터는 콜백함수를 지원하지 않기 때문에 기존에 app.post('/api/users/login',(req, res) =>{ // 요청된 이메일을 데이터베이스 찾기 User.findOne({emai...

www.inflearn.com

https://stackoverflow.com/questions/65090440/how-to-solve-mongoose-v5-11-0-model-find-error-operation-products-find-bu

 

How to solve Mongoose v5.11.0 model.find() error: Operation `products.find()` buffering timed out after 10000ms"

How to solve model.find() function produces "buffering timed out after ... ms"? I'm using mongoose v 5.11.0, npm v6.14.8 and mongodb v Here's the code. var express = require('express'); v...

stackoverflow.com

(4) collection-name 설정

https://forum.freecodecamp.org/t/mongodb-collection-name/460737/4

 

MongoDB collection name

I believe you can force the collection name to be whatever you’d like. mongoose.model('Model name', schema, 'Collection name');

forum.freecodecamp.org

(5) doc

https://mongoosejs.com/docs/connections.html

 

Mongoose v8.3.1: Connecting to MongoDB

Connections You can connect to MongoDB with the mongoose.connect() method. mongoose.connect('mongodb://127.0.0.1:27017/myapp'); This is the minimum needed to connect the myapp database running locally on the default port (27017). For local MongoDB database

mongoosejs.com