본문 바로가기
tech documents/node

mongoose 특정 db와 collection 연결

by kimtahen 2022. 3. 1.
반응형

서론

express.js를 mongodb와 연결하는 중에 계속 connection error가 났다. mongoose docs에서는 아래와 같이 특정 db에 연결하라고 되어있지만, 연결이 되질 않는다.

mongoose.connect('mongodb://localhost:27017/myapp');

해결법

connect 메서드에서 url에 바로 db이름을 설정해주는 방법이 아닌, option으로 넘겨주면 된다. 그리고 collection은 schema에서 설정해주면 된다. 아래는 코드이다.

require('dotenv').config();
const mongoose = require('mongoose');

mongoose.connect(
    `mongodb://${process.env.DB_USER}:${process.env.DB_PASS}@${process.env.DB_HOST}:${process.env.DB_PORT}`,
    {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        dbName: 'homepage', //dbName으로 설정하면 된다.
    }
);

const db = mongoose.connection;

db.once("open",()=>{
    console.log('Connected to mongodb');
});
db.on('error',(err)=>{
    console.log(err);
});

const PostSchema = mongoose.Schema({title: String, author: String});
const Post = mongoose.model('post',PostSchema);
//mongoose.mode('post', PostSchema) 첫번째 인자로 collection name을 지정해주면 된다.

Post.findOne({author: 'kimtahen'})
    .then(users=>{
        console.log(users);
    })
반응형

댓글