Node.js 在Sequelize.js中调用存储过程
我已经搜索了文档并尝试了谷歌搜索,但我没有找到问题的直接答案: 如何在Sequelize中调用存储过程? 我已经搜索了Sequelize的文档,但我甚至没有在其中找到“过程”一词的痕迹 我得到的最接近的结果是这个bug报告变成了功能请求: 引用链接: 我所想象的会很棒: 他们提到可以调用存储过程,但没有提供语法 有人能给我举个语法正确的例子吗?Node.js 在Sequelize.js中调用存储过程,node.js,sequelize.js,Node.js,Sequelize.js,我已经搜索了文档并尝试了谷歌搜索,但我没有找到问题的直接答案: 如何在Sequelize中调用存储过程? 我已经搜索了Sequelize的文档,但我甚至没有在其中找到“过程”一词的痕迹 我得到的最接近的结果是这个bug报告变成了功能请求: 引用链接: 我所想象的会很棒: 他们提到可以调用存储过程,但没有提供语法 有人能给我举个语法正确的例子吗? 谢谢。将成功更改为传播,您就可以开始了。请注意,这只适用于Sequalize 2.0,因此下面是我查询存储过程的方式 sequelize.query(
谢谢。将
成功
更改为传播
,您就可以开始了。请注意,这只适用于Sequalize 2.0,因此下面是我查询存储过程的方式
sequelize.query('CALL calculateFees();').then(function(response){
res.json(response);
}).error(function(err){
res.json(err);
});
在Sequelize中使用参数调用SP
我用EXEC关键字执行了存储过程
sequelize
.query('EXEC getData :@param1', { replacements: { @param1: 'Test'}, type:sequelize.QueryTypes.SELECT })
.then(data => /*Do something with the data*/)
.catch(error => /*Do something with the error*/)
我确信,您可能还需要从存储过程中获取输出。下面是一段代码,其中包含使用sequelize的过程的输出值:
models.sequelize.query('DECLARE@outParam1 INT,@outParam2 INT EXEC procedureName@param1=:param,@outParam1=@outParam1 output,@outParam2=@outParam2 output选择@outParam1作为“outParam1”,@outParam2作为“outParam2”,
{
替换:
{
参数:123
},
类型:models.sequelize.QueryTypes.EXEC
}).spread(结果=>{
如果(结果)
{
console.log(“\n集成结果:+JSON.stringify(结果));
//在这里返回响应
}
因此没有专门的函数来调用存储过程,只调用原始查询(将success
更改为spread
)?我在哪里可以定义这个函数?在模型中将它用作原型函数,我不能在模型之外调用它,例如在控制器中。否则,如果我在控制器本身中使用sequelize,它会说sequelize没有定义,在控制器中定义sequelize是一个好的做法吗?我通常在任何地方都看不到它。如果没有,是什么使用sequelize定义自定义查询的最佳方法?@RameshPareek您可以访问Model.sequelize,我不确定语法,但您可以调试模型原型,您可以找到sequelize。此外,您还可以直接从npmYour导入sequelize。如果您操作不当,它应该看起来像EXEC getData@param1=:param1',{replacements:{@param1:'Test'}
sequelize
.query('CALL login (:email, :pwd, :device)',
{replacements: { email: "me@jsbot.io", pwd: 'pwd', device: 'android', }})
.then(v=>console.log(v));
sequelize
.query('EXEC getData :@param1', { replacements: { @param1: 'Test'}, type:sequelize.QueryTypes.SELECT })
.then(data => /*Do something with the data*/)
.catch(error => /*Do something with the error*/)