MongoDB с Koa JS: client.connect не является функцией - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь разработать свое первое простое приложение, используя Koa, который просто получает некоторые данные и помещает их в базу данных Mon go. Однако мне было трудно даже подключиться к базе данных, поскольку я получаю ответ {"error": "this.db_client.connect is not a function"}. Вот код приложения:

import Koa from "koa";
import bodyParser from "koa-bodyparser";

import {DBHandler} from "./db"
import {error} from "./middlewares/error";

const app = new Koa();

app.use(bodyParser());
app.use(error);

app.use(async ctx => {
    const db = new DBHandler();

    db.writeEntity(ctx.request.body);
});

app.listen(3000);

DBHandler:

export class DBHandler {
    constructor() {
        this.db_url = "mongodb://localhost:27017";
        this.db_client = new MongoClient(this.db_url, {useNewUrlParser: true, useUnifiedTopology: true});
    }

    writeEntity = (entity) => {

        console.log(this.db_client);
        this.db_client.connect((err, client) => {
            if (err) throw new Error("Connection Error");

            const db = client.db("database");
            const collection = db.collection("users");

            collection.insertOne(entity, (err, res) => {
                if (err) throw new Error("Insertion Error");

                console.log(res.ops);
                client.close;
            });
        });
    };
}

Кстати, console.log(this.db_client) печатает Promise { <pending> }, что означает, что мой объект MongoClient является обещанием!

Есть идеи, что происходит и как заставить это работать?

1 Ответ

0 голосов
/ 20 января 2020

Поскольку вы подтвердили в комментариях, что импортируете MogoClient, например, так:

import MongoClient from "mongodb";

Я могу подтвердить, что именно в этом проблема, MongoClient не является прямым экспортом * Модуль 1006 * - это субэкспорт. Вы должны импортировать его так:

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

// Or using require
const MongoClient = require("mongodb").MongoClient;

Это должно решить проблему. Вы можете узнать больше о подключении к MongoDB с MongoClient классом здесь .

...