如何将猫鼬连接方法分离到另一个JS文件?

Posted

技术标签:

【中文标题】如何将猫鼬连接方法分离到另一个JS文件?【英文标题】:How to separate the mongoose connect method to another JS file? 【发布时间】:2021-01-26 11:58:55 【问题描述】:

对于我的不和谐机器人,我正在考虑将 mongoose 连接方法和其他初始化分离到一个单独的 JS 文件中。我能够移动除了连接方法之外的所有东西。我不知道这是怎么做到的。

【问题讨论】:

如果它解决了您的查询,请将其标记为答案 【参考方案1】:

试试下面的代码

// Declare mongoose as global
global.mongoose = require('mongoose');

// In Separate file
const url = "Your URL";

//BUILD A CONNECTION
mongoose.connect(url).then(() =>  console.log('Connected To database :)'))
.catch( err => console.log('error', err));

module.exports.mongoose = mongoose

// Schema File

const users = new mongoose.Schema(
    name : String,
, 
    timestamps : true
)


module.exports = mongoose.model('users', users);

// In model Path
const usersModel = require('Schemas/users')

现在您可以使用 usersModel 查询文档/表格

【讨论】:

感谢您的回答。但我有几个疑问。为什么要导出为全局?如果不是全局的会发生什么? 您可以在不导出为全局的情况下执行此操作。您将需要导入所有文件。试一试。【参考方案2】:
// suppose this filename is, mongoose.db.config.js
const mongoose = require("mongoose");

function mongooseConnectDB(uri) 
  mongoose
    .connect(uri, 
      useNewUrlParser: true,
      useUnifiedTopology: true,
      useFindAndModify: false,
      useCreateIndex: true,
    )
    .then((result) =>
      console.log("Mongoose connected to ", result.connections[0].host)
    )
    .catch((err) => console.log("error connecting to the database", err));


module.exports = mongooseConnectDB;
现在在您的应用程序(main.js/index.js/server.js)中,您可以像这样简单地进行操作
const mongooseConnectDB = require("./mongoose.db.config");
mongooseConnectDB('url_of_your_db');

【讨论】:

以上是关于如何将猫鼬连接方法分离到另一个JS文件?的主要内容,如果未能解决你的问题,请参考以下文章

无法将猫鼬虚拟与打字稿一起使用

如何将猫鼬模式从唯一的 true 更改为唯一的 false

将猫鼬列从对象更改为 ObjectId

猫鼬中的填充方法(节点js)

猫鼬中的填充方法(节点js)

将猫鼬查询结果存储在另一个猫鼬查询中