如果我在node.js中使用Mongoose,我需要这样做:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/myDB');
但是如果我刚刚安装了mongodb并且我目前没有任何数据库怎么办?在执行mongoose.connect('mongodb://localhost/myDB')
之前,如何在node.js中使用mongoose创建新数据库?或者如果没有这样的myDB
那么它会创建一个新的吗?或者会抛出没有这样一个DB的错误?
答案 0 :(得分:19)
不应该抛出任何错误。当您在该数据库的任何新集合中插入文档时,将创建集合和数据库
答案 1 :(得分:0)
在Mongoose中,调用new mongoStore()
时会创建一个新的数据库记录:
app.use(session({
resave: false,
saveUninitialized: true,
secret: pkg.name,
store: new mongoStore({
url: config.db,
collection : 'sessions'
})
}));
或
const mongoStore = require('connect-mongo')(session);
答案 2 :(得分:0)
我在尝试通过猫鼬连接时找到了一个解决方案。
!!!首先你需要指定数据库,即使你想连接到默认数据库(默认数据库是'admin')这很重要!!! 在我指定 /admin db 之前,我的数据是从几个 db 混合而来的。
您需要为正确的数据库指定凭据(如用户名和密码)(在我的情况下为 admin
(我之前从未创建过 admin
db,它是默认的 db))。
但是如果你想连接到另一个数据库怎么办?你应该在连接选项中感觉到authSource
方法(在uri中指定另一个数据库:mongodb://localhost:27017/database):
mongoose.connect(
mongoUri,
{
authSource: 'admin',
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
user: config.mongo.username,
pass: config.mongo.password,
serverSelectionTimeoutMS: 5000,
},
(err) => {
if (err != null) {
error('mongoose', err.message);
} else {
info('mongoose', 'mongoose connected');
}
},
)