programing

es6 스타일 가져오기를 사용하여 MongoDB를 가져오는 방법은 무엇입니까?

instargram 2023. 7. 16. 12:32
반응형

es6 스타일 가져오기를 사용하여 MongoDB를 가져오는 방법은 무엇입니까?

이것이 간단한 질문이기를 바랍니다.es6 import-from style을 사용하여 MongoDB를 가져오려고 합니다.노드를 사용하여 Import하면 정상적으로 작동합니다.

let mongo = require('mongodb');
let MongoClient = mongo.MongoClient;

하지만 제가 es6 방식으로 가져오면 오류나 로그 없이 깨집니다.

import {MongoClient} from 'mongodb';

하지만 컴파일/실행할 때는 MongoClient로 무엇이든 하려고 할 때만 깨지는 것이 아닙니다.

여기 제 DB 매니저 수업이 있습니다.

import {MongoClient} from 'mongodb';

export class DbManager {

  constructor() {
    console.log('Constructing DB Connection');
  }

}

서버를 실행할 때 다른 관리자 및 이벤트로부터 여러 로그를 받습니다.

mycomputer myuser$ ./start.sh
Server Constructing
Route Manager Constructing
Initializing Route: Static
Constructing DB Connection
http server started on port: 8000

그러나 MongoClient의 console.log를 실행하면 출력이 없습니다.

import {MongoClient} from 'mongodb';

export class DbManager {

  constructor() {
    console.log('Constructing DB Connection');
    console.log(MongoClient);
  }

}

그리고 그 결과는 다음과 같습니다.

mycomputer myuser$ ./start.sh
mycomputer myuser$

컴파일 오류가 없는데 왜 안 되는지 이해가 안 됩니다.게다가, 나는 왜 로그가 없는지 이해할 수 없습니다!이것은 마지막으로 일어나는 일 중 하나입니다. 적어도 그 시점까지는 로그가 있어야 한다고 생각합니다.만약 당신이 내 것을 보고 싶다면,start.sh여기 스크립트가 있습니다(빠르고 더럽습니다, 저를 판단하지 마십시오).

tsc
echo "var System = require('systemjs');" > dist/final.js
babel dist/typescript.js >> dist/final.js
echo "System.import('main');" >> dist/final.js
node dist/final.js

편집

응답을 기다리는 동안(희망) 답변을 계속 검색합니다.저는 그 결과를 보고 있습니다.final.js 곳에서나 에는 MongoClient라는 파일을 사용합니다.System.register.

System.register("db/db.manager", ["mongodb"] ...

그리고 사용하지 않으면(가져와도) 표시되지 않습니다.mongodb.

System.register("db/db.manager", [] ...

그러면 아무 일도 일어나지 않는 이유가 설명이 될 겁니다.가져오기를 시도하는 데 문제가 있습니다.mongodb아직 어떻게 해야 할지 모르겠어요.

편집

해결책을 찾았습니다.내가 흥분하지 않는 하나는 아마도 그것이 있어야 하는 방식일 것입니다.

저는 es6 수입에 의존할 수 없을 것 같습니다.실제 모듈이 아닌 typeef를 가져올 수 있을 것 같습니다.내가 어떻게 이런 일을...

import {Db as MongoDb, MongoClient} from 'mongodb';
let mongodb = require('mongodb');
let mongoClient: MongoClient = mongodb.MongoClient;

추가 작업이 많습니다.다른 방법이 있다면 알려주시기 바랍니다.

잘 들어요, 여기 이 해결책에 균열이 몇 개 이상 있다는 것을 압니다.어떤 것들은 당신을 위해 일할 수도 있지만, 저에게는 아래의 것 외에는 아무도 저를 해결해주지 않았습니다.

2021 업데이트:

지루한 뒷이야기 경고

Node 과 Node v14.16.0을 package.json가지다"type": "module"set. 따라서 우리의 코드는 ES6+이며 commonjs 가져오기는 특히 MongoDB Native 3.6 NodeJS Driver와 관련하여 대부분의 경우 거래를 방해합니다.

다행히도 MongoDB Native ^4.0.0-beta.3은 TypeScript로 작성되었으며 예상대로 작동합니다.부서진 영혼이 이륙할 수 있도록 준비합니다.;) 아, 그리고 당신의 비밀 소스(user:pass and uri)를 당신의 소스 코드에 저장하는 것보다, 확인하세요.node-config그리고 안전하세요.

솔루션

# This version will keep changing after this posts, so take heed.
$ cd path/to/your/project
$ npm i -s mongodb@4.0.0-beta.3

프로젝트 내부:

import config from 'config'
// MongoDB
import { MongoClient } from 'mongodb'
const client = new MongoClient(config.get('mongodb.uri'))
await client.connect()
const db = client.db()
const stuff = db.collection('AllTheStuff')
const record = {
  type: "ThisAndThat",
  lastUpdated: new Date().getTime()
}
const query = { type: "ThisAndThat" }
const options = { upsert: true }
const result = await stuff.replaceOne(query, record, options)

그리고 오늘 밤 당신의 고양이들은 모두 잠자코 있습니다.바라건대 이것이 세상에서 도전할 수 없는 광기의 수준을 낮추거나, 성취에 대한 당신의 취향에 맞는 당신의 탐구에 도움이 되기를 바랍니다.:)

import { MongoClient } from 'mongodb';

node_proxy/@types/mongodb/index.d.ts에서 형식 정의만 가져옵니다.

import * as mongodb from 'mongodb';

node_module/mongodb/index.js에서 모든 항목을 가져오며 다음과 같습니다.

let mongodb = require('mongodb');

사용해 보십시오.

import { default as mongodb } from 'mongodb';
let MongoClient = mongodb.MongoClient;

편집

Elihu가 아래 코멘트에서 지적했듯이, @types/mongo의 추가 통합은 이제 더 이상 사용되지 않으며, mongo 패키지가 기본값당 유형과 함께 제공되기 때문에 더 이상 필요하지 않습니다.

npm install --save mongodb따라서 충분합니다.

원답

Asmkalmo는 mongodb 유형을 가져올 수 있다고 제안했습니다.

1단계: npm mongodb 유형 패키지를 통해 설치
npm install --save @types/mongodb

2단계: 사용!

import mongodb from "mongodb";
const MongoClient = mongodb.MongoClient;

이것은 나에게 도움이 됩니다.

import mongodb from 'mongodb'
const { MongoClient } = mongodb

언급URL : https://stackoverflow.com/questions/35962879/how-to-import-mongodb-using-es6-style-imports

반응형