最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

mongoose.connection.useDb('projectDb') 没有按预期工作..仍然创建'测试'数据库

网站源码admin33浏览0评论

mongoose.connection.useDb('projectDb') 没有按预期工作..仍然创建'测试'数据库

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 请求时创建。

我一直在努力解决这个问题,但无法弄清楚。任何建议或工作方向将不胜感激。

回答如下:
发布评论

评论列表(0)

  1. 暂无评论