본문 바로가기
Node.js

BSON Error 해결

by 세인트킴 2024. 3. 10.

코딩애플에서 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