[英]How to pass a formatted query to findOne() in mongo using node.js
[英]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.