使用特定数据库的MongoDB连接模型

发布于 2025-02-12 08:36:16 字数 639 浏览 1 评论 0原文

当我使用mongoose.connection时,模型直接与唯一连接连接。

在这种情况下,DB1仅用于查询(不是模型需要)。但是DB2使用2种型号。

如何仅将这些型号与DB2连接?

感谢您的帮助

const db1 = mongoose.createConnection("atlasuri").asPromise()
const db2 = mongoose.createConnection("localuri").asPromise()

app.get("/",async(req,res)=>{
    const finded =  (await db1).collection("users")
    await finded.forEach(el=> console.log(el))
    res.json(finded)
})

模型

const Criterion1=new mongoose.model('Criterion',new mongoose.Schema({
 name:string
}));
const User=new mongoose.model('Criterion',new mongoose.Schema({
 name:string
}));

When I use mongoose.connection, models are connected directly with the unique connection.

In this case db1 is only used for querying (not model require). But db2 use 2 models.

How can I connect those models with db2 only?

Thanks for helping

const db1 = mongoose.createConnection("atlasuri").asPromise()
const db2 = mongoose.createConnection("localuri").asPromise()

app.get("/",async(req,res)=>{
    const finded =  (await db1).collection("users")
    await finded.forEach(el=> console.log(el))
    res.json(finded)
})

Models

const Criterion1=new mongoose.model('Criterion',new mongoose.Schema({
 name:string
}));
const User=new mongoose.model('Criterion',new mongoose.Schema({
 name:string
}));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青衫儰鉨ミ守葔 2025-02-19 08:36:16

使用createConnection()

const CriterionModel = require('./criterion');
const mongoose = require('mongoose');

const atlasuri = 'mongodb://localhost:27017/so1';  // <== your Atlas URI HERE
const localuri = 'mongodb://localhost:27017/so2';

const conn = mongoose.createConnection(atlasuri);
const conn2 = mongoose.createConnection(localuri);

const Criterion1 = conn.model('Criterion', new mongoose.Schema({
  name:String
}));

const users = conn2.model('Criterion', new mongoose.Schema({
  name:String
}));

// atlasuri
conn.on('connected', async () => {
  const doc = await Criterion1({  // add a document
    'name': 'Only in atlasuri'
  });
    
  await doc.save((err, doc) => {
    if (err) {
      console.log('error adding!');
    }
  });

  console.log('Added to atlas');
});

// localuri
conn2.on('connected', async () => {
  // add a document
  const doc = await users({  // add a document
    'name': 'Only in localuri'
  });
   
  doc.save((err, doc) => {
    if (err) {
      console.log('error adding!');
    }
  });
  console.log('Added to local');
});

function handleExit(signal) {
  console.log(`Received ${signal}. Shutting down.`);
  conn.close();
  conn2.close();
  process.exit(0);
}
process.on('SIGINT', handleExit);
process.on('SIGQUIT', handleExit);
process.on('SIGTERM', handleExit);

criterion.js

const mongoose = require('mongoose');

const CriterionSchema = mongoose.Schema({
  name:String
});

module.exports = mongoose.model('Criterion', CriterionSchema);

Use createConnection():

const CriterionModel = require('./criterion');
const mongoose = require('mongoose');

const atlasuri = 'mongodb://localhost:27017/so1';  // <== your Atlas URI HERE
const localuri = 'mongodb://localhost:27017/so2';

const conn = mongoose.createConnection(atlasuri);
const conn2 = mongoose.createConnection(localuri);

const Criterion1 = conn.model('Criterion', new mongoose.Schema({
  name:String
}));

const users = conn2.model('Criterion', new mongoose.Schema({
  name:String
}));

// atlasuri
conn.on('connected', async () => {
  const doc = await Criterion1({  // add a document
    'name': 'Only in atlasuri'
  });
    
  await doc.save((err, doc) => {
    if (err) {
      console.log('error adding!');
    }
  });

  console.log('Added to atlas');
});

// localuri
conn2.on('connected', async () => {
  // add a document
  const doc = await users({  // add a document
    'name': 'Only in localuri'
  });
   
  doc.save((err, doc) => {
    if (err) {
      console.log('error adding!');
    }
  });
  console.log('Added to local');
});

function handleExit(signal) {
  console.log(`Received ${signal}. Shutting down.`);
  conn.close();
  conn2.close();
  process.exit(0);
}
process.on('SIGINT', handleExit);
process.on('SIGQUIT', handleExit);
process.on('SIGTERM', handleExit);

In criterion.js:

const mongoose = require('mongoose');

const CriterionSchema = mongoose.Schema({
  name:String
});

module.exports = mongoose.model('Criterion', CriterionSchema);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文