【问题标题】:MongoDB connect model with a specific databaseMongoDB 连接模型与特定数据库
【发布时间】:2022-07-31 02:45:30
【问题描述】:

当我使用 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
}));

【问题讨论】:

    标签: javascript mongodb mongoose nosql mongoose-schema


    【解决方案1】:

    使用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);
    

    【讨论】:

      猜你喜欢
      • 2014-04-20
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2018-11-05
      • 2016-05-02
      • 1970-01-01
      相关资源
      最近更新 更多