Nodejs eggjs 中如何正确的调用存储过程?
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 存储过程,并通过服务层和控制器返回结果。记得替换示例中的数据库连接信息和存储过程名称。