Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在Sequelize.js中调用存储过程_Node.js_Sequelize.js - Fatal编程技术网

Node.js 在Sequelize.js中调用存储过程

Node.js 在Sequelize.js中调用存储过程,node.js,sequelize.js,Node.js,Sequelize.js,我已经搜索了文档并尝试了谷歌搜索,但我没有找到问题的直接答案: 如何在Sequelize中调用存储过程? 我已经搜索了Sequelize的文档,但我甚至没有在其中找到“过程”一词的痕迹 我得到的最接近的结果是这个bug报告变成了功能请求: 引用链接: 我所想象的会很棒: 他们提到可以调用存储过程,但没有提供语法 有人能给我举个语法正确的例子吗? 谢谢。将成功更改为传播,您就可以开始了。请注意,这只适用于Sequalize 2.0,因此下面是我查询存储过程的方式 sequelize.query(

我已经搜索了文档并尝试了谷歌搜索,但我没有找到问题的直接答案:

如何在Sequelize中调用存储过程?

我已经搜索了Sequelize的文档,但我甚至没有在其中找到“过程”一词的痕迹

我得到的最接近的结果是这个bug报告变成了功能请求:

引用链接:

我所想象的会很棒:

他们提到可以调用存储过程,但没有提供语法

有人能给我举个语法正确的例子吗?


谢谢。

成功
更改为
传播
,您就可以开始了。请注意,这只适用于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*/)