在数据库之间切换并使用模式执行操作

问题描述 投票:0回答:0

主要目标是创建多数据库系统。在 index.js 中,我用 test(db) 初始化了一个 mongodb 连接。在此 orglist 集合中,它包含 orgDomain 及其数据库名称。 任务是在 orglist 集合中创建一个对象,然后从该 orglist 自动创建新数据库并切换到该数据库并使用组织架构将组织信息插入新组织数据库。

但问题是 orglist 已创建,除非我在其中创建任何集合,否则不会显示新数据库。然后组织信息应该使用模式插入到新创建的数据库中,但它存储在测试(数据库)中。我确实切换了数据库,但它没有将它存储在 newdb

这是 orglist 架构

const mongoose = require('mongoose');

const orglistSchema = mongoose.Schema({
    orgDomain:{type:String, trim:true},
    dbName:{type:String, trim: true}
},{timestamps:true})

const orglist = mongoose.model('Orgs', orglistSchema);

module.exports = orglist;

这是组织模式:

const mongoose = require('mongoose');

const organizationSchema = new mongoose.Schema({
  organizationName: {
    type: String,
    required: true
  },
  orgDomain: {
    type: String,
    required: true,
    unique: true
  },
  userTyre: {
    type: Number,
    default: null,
  }
},{timestamps: true});


module.exports = mongoose.model('Organization', organizationSchema);

这是控制器功能:

const orglist = require('../models/adminEnd/niam')
const Organization = require('../models/adminEnd/organization')
const mongoose = require('mongoose')

function niamAdminController(){
    return{
        //add organization and its db from niam admin
        async addOrganization(req, res) {
            try {
              // Save org list details in main database
              const org = new orglist(req.body);
              const saveOrg = await org.save();
              //here it is saving properly in testdb

              // create newdb string
              const dbString = process.env.Mongoose_New_Db + '/' + org.dbName;
              console.log(dbString);
              
              //create new db
              const orgConnection = await mongoose.createConnection(dbString, {
                useNewUrlParser: true,
                useUnifiedTopology: true,
              });
              orgConnection.on('open', () => {
                console.log(`Connection  successful!`);
              });

              const db = orgConnection.useDb(org.dbName); // switch to the new database

              const orgDoc = new Organization({
                organizationName: org.dbName,
                orgDomain: org.orgDomain,
                userTyre: 10000,
              });
              await orgDoc.save();
              //but this save() is done in test db not into the switched db.
              console.log('Org info created');
              
              res.status(201).json({
                success: true,
                message: "New organization created.",
                data: saveOrg
              });
            } catch (err) {
              console.log(err);
              res.status(500).json({
                success: false,
                message: err.message
              });
            }
          }
          
    }
}

module.exports = adminController

我的组织在控制器第二部分的详细信息也插入到初始测试(db)中

javascript node.js mongodb mongoose nosql
© www.soinside.com 2019 - 2024. All rights reserved.