相关疑难解决方法(0)

单节点.js项目中的Mongoose和多个数据库

我正在做一个包含子项目的Node.js项目.一个子项目将有一个Mongodb数据库,Mongoose将用于包装和查询db.但问题是

  • Mongoose不允许在单个mongoose实例中使用多个数据库,因为模型是在一个连接上构建的.
  • 要使用多个mongoose实例,Node.js不允许多个模块实例,因为它具有缓存系统require().我知道在Node.js中禁用模块缓存,但我认为这不是一个好的解决方案,因为它只需要mongoose.

    我曾尝试使用createConnection()openSet()猫鼬,但它不是解决方案.

    我试图深度复制mongoose实例(http://blog.imaginea.com/deep-copy-in-javascript/)以将新的mongoose实例传递给子项目,但它会抛出RangeError: Maximum call stack size exceeded.

我想知道是否有使用多个数据库与mongoose或任何解决方法来解决这个问题?因为我认为猫鼬非常容易和快速.或任何其他模块作为建议?

javascript database mongoose mongodb node.js

108
推荐指数
5
解决办法
8万
查看次数

Mongoose - 多个数据库连接

我想了解如何在 mongoose 全局承诺连接中的数据库之间切换。

我当前的连接是这样建立的 app.ts

import * as mongoose from 'mongoose';

...

try {
    await mongoose.createConnection(`mongodb://localhost:27017/db1`, {
        useNewUrlParser: true,
    })
    console.log("Connected")
} catch (error) {
    console.log(error)
}
Run Code Online (Sandbox Code Playgroud)

然后我在不同的文件中访问它 some.model.ts

import { Schema, Document, model } from 'mongoose';

const SomeSchema: Schema = new Schema({
  name: { type: String, required: true },
  owner: { type: string, required: true }
});
export default model('Some', SomeSchema);
Run Code Online (Sandbox Code Playgroud)

根据文档。

到目前为止,我们已经看到了如何使用 Mongoose 的默认连接连接到 MongoDB。有时我们可能需要向 Mongo 打开多个连接,每个连接都有不同的读/写设置,或者可能只是例如不同的数据库。在这些情况下,我们可以使用 mongoose.createConnection() 它接受已经讨论过的所有参数并为您返回一个新的连接。 const conn = mongoose.createConnection('mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]', options);

我可以像这样创建多个数据库连接

try {
const …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js typescript

3
推荐指数
1
解决办法
6095
查看次数

标签 统计

mongodb ×2

mongoose ×2

node.js ×2

database ×1

javascript ×1

typescript ×1