Node.js 如何使用mongoose.connect检查mongodb连接期间是否存在db?
我尝试使用mongoose.connect检查数据库是否存在Node.js 如何使用mongoose.connect检查mongodb连接期间是否存在db?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我尝试使用mongoose.connect检查数据库是否存在 mongoose.connect("mongodb://localhost:27017/notexistdb",function(err){ if(err) console.log(err); }); 回调不包含错误消息,因此如何确定数据库是否存在。您可以尝试使用open和error事件查看是否可以连接到数据库。如果你能连接到它,那么它就存在了。如果你不能,那么它就不能 var mongoose = require('mo
mongoose.connect("mongodb://localhost:27017/notexistdb",function(err){
if(err) console.log(err);
});
回调不包含错误消息,因此如何确定数据库是否存在。您可以尝试使用
open
和error
事件查看是否可以连接到数据库。如果你能连接到它,那么它就存在了。如果你不能,那么它就不能
var mongoose = require('mongoose');
mongoose.connection.on('open', function (ref) {
console.log('Connected to Mongo server...');
});
mongoose.connection.on('error', function (err) {
console.log('Could not connect to Mongo server...');
console.log(err);
});
mongoose.connect('mongodb://localhost:27017/notexistdb',function(err){
if(err) console.log(err);
});
您可以通过获取数据库列表轻松找到
var mongoose = require('mongoose')
, Admin = mongoose.mongo.Admin;
/// create a connection to the DB
var connection = mongoose.createConnection(
'mongodb://user:pass@localhost:port/database');
connection.on('open', function() {
// connection established
new Admin(connection.db).listDatabases(function(err, result) {
console.log('listDatabases succeeded');
// database list stored in result.databases
var allDatabases = result.databases;
});
});
如果要返回答案,需要使用
desync
库
使用npm i desync安装desync
您还可以通过导出其他文件在其中使用以下函数
const mongoose = require("mongoose");
var Admin = mongoose.mongo.Admin;
const deasync = require("deasync");
function checkDatabase (dbName) {
var check; // we will return this value
var uri = "mongodb://localhost:27017/";
// connect with mongoDB
mongoose.connect(uri, {useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true})
.then(() => {
new Admin(mongoose.connection.db).listDatabases((err, result) => {
var allDatabases = result.databases;
check = allDatabases.some((database) => database.name === dbName);
});
})
.catch((err) => {
console.log("some error occured");
});
// wait while mongoose executes the result
while (check == null) {
deasync.runLoopOnce();
}
return check; // either true or false
};
我们需要使用
desync
,因为节点的许多功能都是异步的。要了解更多信息:这可能会有所帮助。它似乎对我不起作用,不会返回任何错误消息。mongoose.connect似乎只是检查你的应用程序是否可以连接到服务器,比如说localhost:27017
,而不是检查特定数据库的存在。同样,在这里,我发布了一个稍微不同的问题。。它不检查数据库是否存在。有什么解决办法吗?