数据库"/>
mongoose.connection.useDb('projectDb') 没有按预期工作..仍然创建'测试'数据库
我在一个有很多项目的快速服务器上工作。到目前为止,这些集合被保存在这些不同项目的数据库中。我们想改变这一点,让每个项目都有一个数据库,所以我们将其用作模型格式。这只是其中一个项目的用户模型示例
userModel.js
const mongoose = require("mongoose");
const validator = require("validator");
const userSchema = new mongoose.Schema({
role: {
type: String,
enum: ["user", "moderator", "editor", "admin"],
default: "user",
},
name: {
type: String,
required: [true, "Name is Required"],
},
email: {
type: String,
required: true,
validate: [validator.isEmail, "Email is not valid"],
unique: true,
lowercase: true,
},
mobile: {
type: String,
},
password: {
type: String,
required: true,
minlength: 8,
},
passwordChangedAt: Date,
passwordResetToken: String,
passwordResetExpires: Date,
isActive: {
type: Boolean,
default: true,
},
});
const db = mongoose.connection.useDb(process.env.H_STAY_DB);
const User = db.model("HStayUser", userSchema);
module.exports = User;
这是在 server.js 中启动数据库的方式
const DB = `${process.env.DATABASE_LOCAL}`;
mongoose
.connect(DB, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then((conn) => {
console.log("Connected to DB");
})
.catch((error) => console.log(error));
并且没有在 mongo 数据库的 URI 中声明默认数据库。这是 .env 文件中的条目
DATABASE_LOCAL=mongodb://localhost:27017/
但是,当我尝试创建用户时,用户会在
test
数据库中创建,而不是在 projectDb
数据库中创建。事实上,当服务器加载时,这个 test
数据库是在加载时自动创建的。我希望我在 userModel 中实现的 useDb('projectDb)
选项对服务器可见,并期望 projectDb
在加载或接收 createUser 请求时创建。
我一直在努力解决这个问题,但无法弄清楚。任何建议或工作方向将不胜感激。
回答如下:更多推荐
mongoose.connection.useDb('projectDb') 没有按预期工作..仍然创建'测试'数据库
发布评论