코딩애플에서 DB 사용법을 준 것은 BSON Error이 계속 발생한다. 자바스크립트는 비동기 언어이기 때문에 일부러 Blocking을 주지 않으면 BSON Error이 발생한다. 코딩애플에서 준 코드는 async, await이 없기 때문에 db를 연결할 때 에러가 발생한다.
const { MongoClient } = require('mongodb')
let db
const url = 'mongodb사이트에 있던 님들의 접속 URL'
new MongoClient(url).connect().then((client)=>{
console.log('DB연결성공')
db = client.db('forum')
app.listen(8080, () => {
console.log('http://localhost:8080 에서 서버 실행중')
})
}).catch((err)=>{
console.log(err)
})
try{ catch() } 구문 안에 async, await을 넣어서 오류를 해결했다.
const { ObjectId, MongoClient } = require('mongodb');
const url = process.env.DB_URL;
const client = new MongoClient(url, { useUnifiedTopology: true });
const dbName = process.env.DB_NAME;
let db; // db 변수를 전역 변수로 선언하여 함수 외부에서 접근 가능하게 함
async function connectToMongoDB() {
try {
await client.connect();
console.log('DB 연결 성공');
db = client.db(dbName); // db 변수에 데이터베이스 할당
app.listen(8080, ()=> {
console.log('http://localhost:8080 에서 서버 실행중')
})
} catch(err) {
console.error('DB 연결 실패:', err);
}
}
connectToMongoDB();
에러 메세지
더보기
BSONError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer
at new ObjectId (C:\Users\82103\Desktop\forum\node_modules\bson\lib\bson.cjs:2055:23)
at C:\Users\82103\Desktop\forum\server.js:79:68
at Layer.handle [as handle_request] (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\route.js:149:13)
at Route.dispatch (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\route.js:119:3)
at Layer.handle [as handle_request] (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\82103\Desktop\forum\node_modules\express\lib\router\index.js:284:15
at param (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\index.js:365:14)
at param (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\index.js:376:14)
at Function.process_params (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\index.js:421:3)
BSONError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer
at new ObjectId (C:\Users\82103\Desktop\forum\node_modules\bson\lib\bson.cjs:2055:23)
at C:\Users\82103\Desktop\forum\server.js:79:68
at Layer.handle [as handle_request] (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\route.js:149:13)
at Route.dispatch (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\route.js:119:3)
at Layer.handle [as handle_request] (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\82103\Desktop\forum\node_modules\express\lib\router\index.js:284:15
at param (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\index.js:365:14)
at param (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\index.js:376:14)
at Function.process_params (C:\Users\82103\Desktop\forum\node_modules\express\lib\router\index.js:421:3)
'Node.js' 카테고리의 다른 글
시퀄라이즈 참조 정리 (0) | 2024.03.20 |
---|---|
사소한 오류 해결 (0) | 2024.03.20 |
list.js Router - 404 Error (0) | 2024.02.16 |
MongoDB Router 연결 (1) | 2024.02.16 |
라우터 설정 (0) | 2024.02.16 |