zzpda 2024-01-09 11:51 采纳率: 66.7%
浏览 6

node.js+koa2+sequelize+mssql,sequelize如何根据路由返回的参数来连接不同的数据库

node.js+koa2+sequelize+mssql,sequelize如何根据路由返回的参数来连接不同的数据库?
首先我实例了一个Sequelize,即

caipuRouter.post('/getJiGou', async (ctx, next) => {
    try {
        let req = ctx.request.body;
        let dbName="eszw"+req.year
        console.log('dbName:',dbName);
        
        const sequelize = new Sequelize(dbName, user, pwd, {
            host: host,
            port: 1433,
            dialect: "mssql",
        })
        let str = ""
        let rst = {}
        //获取单位列表
        str = "select set_code,set_name from sys_book_set where set_code!='999'"
        result = await sequelize.query(str, {
            type: QueryTypes.SELECT
        })
        console.log(result)
        rst.jigou = result
        ctx.response.status = 200;
        ctx.body = {
            code: 200,
            msg: '数据获取成功!',
            data: rst
        }
    } catch (err) {
        console.log(err)
        ctx.body = {
            code: 203,
            msg: '数据获取失败!',
            data: err
        }
    }
})

查询时显示错误如下:

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-09 14:35
    关注

    【以下回答由 GPT 生成】

    在代码中,您需要将userpwdhost更改为实际的数据库用户名、密码和主机地址。此外,您还需要导入和设置Sequelize库。以下是您可以尝试的更改示例:

    // 导入Sequelize库
    const { Sequelize } = require('sequelize');
    
    // 定义sequelize实例,并使用默认数据库连接
    const sequelize = new Sequelize('defaultDatabase', 'user', 'pwd', {
        host: 'host',
        port: 1433,
        dialect: 'mssql',
    });
    
    caipuRouter.post('/getJiGou', async (ctx, next) => {
        try {
            let req = ctx.request.body;
            let dbName = "eszw" + req.year;
            console.log('dbName:', dbName);
    
            // 使用sequelize实例来切换到不同的数据库连接
            await sequelize.queryInterface.sequelize.changeDatabase(dbName);
    
            let str = "";
            let rst = {};
    
            // 执行数据库查询操作
            // ...
    
            ctx.response.status = 200;
            ctx.body = {
                code: 200,
                msg: '数据获取成功!',
                data: rst
            }
        } catch (err) {
            console.log(err)
            ctx.body = {
                code: 203,
                msg: '数据获取失败!',
                data: err
            }
        }
    })
    

    请注意,为了能够动态切换数据库连接,您需要使用sequelize.queryInterface.sequelize.changeDatabase(dbName)方法来更改连接的数据库。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月9日