CouchDB 数据库 create/delete

CouchDB Database create/delete

我有一个 NodeJS 应用程序,但在使用 nano create/delete 数据库时遇到问题。我想检查是否有包含用户名的数据库。如果有数据库我想清除它所以我销毁它并创建一个新的。

module.exports.createDB = function () {
  try {
    nano.db.list().then((body) => {
      // body is an array
      body.forEach((db) => {
        if(db == getUser.username){
          nano.db.destroy(getUser.username)
        }
      });
    });
    nano.db.create(getUser.username).then((body) => {
      nano.use(getUser.username).insert(
        { "views": 
          { "webview": 
            { "map": "function (doc) {\n  emit(doc.msg, 1);\n}", "reduce": "_count" }
          }
        }, '_design/output', function (error, response) {
          console.log("Design Created");
        });
    })
  } catch (error) {
    console.log(error);
  }
}

如果没有同名的数据库,它工作正常,但如果有同名的数据库,我会得到错误:

(node:33354) UnhandledPromiseRejectionWarning: 错误: 无法创建数据库,文件已经存在。

但是我不知道为什么,因为我之前破坏了这个数据库?

您可以通过调用db.info()来检查数据库是否存在。如果它存在,您可以销毁它并重新创建它。如果不存在,就创建它:

const Nano = require('nano')
const nano = Nano(process.env.COUCH_URL)

const main = async () => {

  const DBNAME = 'mydb'
  const db = nano.db.use(DBNAME)
  try {
    const info = await db.info()
    console.log('DB Exists!', info)
    await nano.db.destroy(DBNAME)
  } catch (e) {
    console.log('DB does not exist!')
  }
  await nano.db.create(DBNAME)
}

main()