0

我正在构建一个 Nodejs/Mongoose 后端,并且我有一个带有两个数据库的 MongoDB Atlas 集群:A 和 B。

我已经使用 createConnection() 连接到数据库 A 和 B。像这样:

const connectDB = (url) => {
  return mongoose
  .createConnection(url, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false,
    useUnifiedTopology: true
  })
}

const A = connectDB( *theURI* )
const B = connectDB( *theURI* )

我为数据库设置的模型创建如下(例如数据库 A):

const fruit = A.model('fruit', fruitSchema)
const animal = A.model('animal', animalSchema)

module.exports = {
  fruit,
  animal
}

现在我尝试访问 mongoose.models 对象,以查看我的模型的概述(因为我需要它)。我的模型不显示。当我使用 mongoose.model 而不是 A.model 创建模型时,它们确实出现了。

然而,我看不出这有什么意义。我是否错误地设置了我的模型(尽管它确实起作用)?如果我不使用 mongoose.model,我的代码一定会遇到麻烦吗?

谢谢你。

4

1 回答 1

0

我想我现在明白了。我不会删除帖子,而是解释帮助我理解的内容。

显然,Mongoose 区分了“默认”连接和“非默认”连接。您只能创建一个默认连接(使用 mongoose.connect),但可以创建多个非默认类型的连接(使用 .createConnection)。

模型被分配给一个连接——无论是否默认。我的模型分配给 A 和 B,可以通过 A.models 或 B.models 访问。

据我了解,按照我的方式建立连接和模型没有任何问题。我希望,无论如何。

于 2021-10-02T15:07:05.490 回答