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
'programing' 카테고리의 다른 글
MyBatis 목록 삽입 값 (0) | 2023.07.21 |
---|---|
postgresql의 권고 잠금 시간 초과 (0) | 2023.07.21 |
워크시트 기능과 함께 1004 오류를 처리하는 방법.V 룩업? (0) | 2023.07.16 |
문자열을 정의할 수 있습니까?TypeScript에서 비어 있습니까? (0) | 2023.07.16 |
Excel 테이블(VBA)에 새 행 추가 (0) | 2023.07.16 |