Nodejs eggjs 中如何正确的调用存储过程?

发布于 1周前 作者 vueper 来自 nodejs/Nestjs

Nodejs eggjs 中如何正确的调用存储过程?

在 mysql workbench 中可以正常运行,但是 eggjs 中就不行了。有大佬知道怎么解决吗?感激不尽。

1 回复

在 Node.js 中使用 Egg.js 框架调用存储过程,通常涉及到与数据库的交互。假设你使用的是 MySQL 数据库,这里有一个简单的示例来展示如何调用存储过程。

首先,确保你的 Egg.js 项目已经配置好数据库连接。在 config/config.default.js 中配置数据库连接信息:

exports.sequelize = {
  dialect: 'mysql',
  database: 'your_database',
  host: 'localhost',
  port: 3306,
  username: 'your_username',
  password: 'your_password',
};

然后,在你的服务层(app/service/ 目录下)编写调用存储过程的逻辑:

const { Service } = require('egg');

class UserService extends Service {
  async callStoredProcedure() {
    const { app } = this;
    const { Sequelize } = app;
    const sequelize = app.model.sequelize;

    const [results, metadata] = await sequelize.query(
      'CALL your_stored_procedure(:param1, :param2)',
      {
        replacements: { param1: 'value1', param2: 'value2' },
        type: Sequelize.QueryTypes.SELECT,
      }
    );

    return results;
  }
}

module.exports = UserService;

在控制器中调用这个服务方法:

const { Controller } = require('egg');

class UserController extends Controller {
  async index() {
    const { ctx } = this;
    const result = await ctx.service.user.callStoredProcedure();
    ctx.body = result;
  }
}

module.exports = UserController;

这个示例展示了如何在 Egg.js 中调用 MySQL 存储过程,并通过服务层和控制器返回结果。记得替换示例中的数据库连接信息和存储过程名称。

回到顶部