簡體   English   中英

如何使用Node.js mongodb官方提供程序重新創建mongo數據庫?

[英]How to recreate a mongo database with using Node.js mongodb official provider?

我有一個簡單的案例-如果數據庫存在,我想刪除它,然后創建一個新數據庫。 我使用node.js官方驅動程序

現在,我嘗試使用以下代碼進行操作:

const client = new MongoClient(dbUrl, { useNewUrlParser: true });

  client.connect(() => {
    const db = client.db();

    db.dropDatabase();
    createUsers(db);

    client.close();

    console.log(`Database "${db.databaseName}" created successfully`);
  }, (error) => {
    if (error) throw error;
  });

但是我收到一個錯誤:mongodb中的“拓撲已被破壞”。 但是,刪除后沒有創建數據庫的方法。 如何正確重新創建數據庫?

刪除client.close();

看我的代碼

const {MongoClient} = require('mongodb');

MongoClient.connect('mongodb://localhost:27017', { useNewUrlParser: true }).then((client) => {
    console.log('Connected to MongoDB server')

    const dbOld = client.db('db01')

    // drop db01
    dbOld.dropDatabase().then(() => {
        console.log(`${dbOld.databaseName} drop successfully `)

        // create db01 again
        const dbNew = client.db('db01')

        console.log(`${dbNew.databaseName} recreated successfully `);

    },e => console.log(e))
})

祝好運!

基於@padeq的最終解決方案:

/**
 * Rereates a database
 * @param {String} dbUrl Database url
 */
const recreateTestDb = (dbUrl) => {
  MongoClient.connect(dbUrl, { useNewUrlParser: true }).then((client) => {
    const currentDb = client.db();

    currentDb.dropDatabase().then(() => {
      const newDb = client.db();

      createUsers(newDb);

      client.close().then(() => {
        console.log(`New database "${newDb.databaseName}" recreated successfully`);
      });
    });
  });
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM