node.js - CouchDB 数据库创建/删除
问题描述
我有一个 NodeJS 应用程序,但在使用 nano 创建/删除数据库时遇到问题。我想检查是否有带有用户名的数据库。如果有一个数据库,我想清除它,所以我销毁它并创建一个新的。
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);
}
}
如果没有同名的数据库,它工作正常,但如果有同名的数据库,我得到错误:
(节点: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()
推荐阅读
- php - PHP (WP) - 忽略 HTML 标记
- php - 未定义的属性:Login_Controller::$user
- asp.net-mvc - 为什么这个 ajax 发布请求在 mvc 应用程序中不起作用
- c - 未分配给左值的指针的强制转换(?)
- python - Heroku 分离的一次性 dynos 应用程序在几分钟后停止/完成
- javascript - 使用 keypress 或 keyup 事件以角度更改键入的字符
- javascript - 为什么出现 input_Login 在浏览器中未定义?
- debugging - VSCode 中的绿色调试器指针表示什么?
- asp.net-core - IdentityServer4,WindowsCryptographicException:系统找不到指定的文件
- pytorch - 找不到有效的 cuDNN 算法来运行卷积