개발자
아래 코드는 https://medium.com/@cramirez92/build-a-nodejs-cinema-microservice-and-deploying-it-with-docker-part-1-7e28e25bfa8b 여기에서 공부하다가 나온 코드입니다. getMongoUrl을 찍으면 다음과 같이 나옵니다. "mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/movies" 현재는 해당 코드가 deprecated 되어서 실행이 전혀 안되서 현재버전으로 바꿔서 짜보고 싶은데 옵션 넣어주는 코드가 어떤 의미 인지 모르겠습니다. 도움주시면 정말 감사드리겠습니다. mongodb documentaion 링크도 같이 남겨드립니다. https://www.mongodb.com/docs/v6.0/replication/ https://mongodb.github.io/node-mongodb-native/4.13/index.html 추가로 const MongoClient = require('mongodb'); const {MongoClient} = require('mongodb'); 의 차이도 궁금합니다.
1const MongoClient = require('mongodb')
2
3// here we create the url connection string that the driver needs
4const getMongoURL = (options) => {
5 const url = options.servers
6 .reduce((prev, cur) => prev + `${cur.ip}:${cur.port},`, 'mongodb://')
7
8 return `${url.substr(0, url.length - 1)}/${options.db}`
9}
10
11// mongoDB function to connect, open and authenticate
12const connect = (options, mediator) => {
13 mediator.once('boot.ready', () => {
14 MongoClient.connect( getMongoURL(options), {
15 db: options.dbParameters(),
16 server: options.serverParameters(),
17 replset: options.replsetParameters(options.repl)
18 }, (err, db) => {
19 if (err) {
20 mediator.emit('db.error', err)
21 }
22
23 db.admin().authenticate(options.user, options.pass, (err, result) => {
24 if (err) {
25 mediator.emit('db.error', err)
26 }
27 mediator.emit('db.ready', db)
28 })
29 })
30 })
31}
32
33module.exports = Object.assign({}, {connect})
34-------------------------------
답변 1
안녕하세요! 몽고 DB를 사용해보지는 않았지만 공식 문서를 훑어보니 url에 "?replicaSet=레플리카이름" 파라미터를 추가하거나 option을 주면 되는 것 같습니다. - https://www.mongodb.com/docs/drivers/node/current/fundamentals/connection/connect/#connect-to-a-replica-set connection option 값에 대한 정보도 mongo db와 node-mongodb-native 공식문서에 있어요! - https://www.mongodb.com/docs/drivers/node/current/fundamentals/connection/connection-options/ - https://mongodb.github.io/node-mongodb-native/4.13/interfaces/MongoClientOptions.html#replicaSet 위 블로그의 예시에서 option 값들은 config 파일에서 불러오는 것 같네요. - https://gist.github.com/crizstian/5421d2ae083df42cc487282369936a1f#file-movie-service-config-js ----- const MongoClient = require('mongodb'); const {MongoClient} = require('mongodb'); 이거에 대한 차이는 default export와 named export 차이인 것 같아요. mongodb 파일 내부에서 "export default MongoClient;"라고 export하고 있으면 {}가 없는 형식으로 import를 하시면되고 mongodb 파일에서 여러 함수/클래스 등을 개별 export를 하고 있다면 {} 사용한 import문을 사용하실 수 있습니다. 자세한건 이 블로그 참고해보시면 좋을 것 같아요. - https://medium.com/@_diana_lee/default-export%EC%99%80-named-export-%EC%B0%A8%EC%9D%B4%EC%A0%90-38fa5d7f57d4
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!