javascript - 如何从 SP 检索的函数返回值?

标签 javascript node.js

我有一个函数,在其中调用 SP 来检索详细信息。我的 rows[0] 包含从 SP 检索的所有数据。我需要将此值作为函数的返回值返回。 但每次我返回这个时,我都会得到 **

undefined

**。

如何通过函数返回结果。 下面是我的代码:

    function GetBOMData(BOMName, params, notifySchneiderParam, res, cubicleType, cubicle) {   
      var ret; 
      connection.query('CALL ' + BOMName + '(' + params + ')', function (error, rows, result){
       ret= rows[0];    
    });
    return ret;
}

这就是我调用函数的方式:

function GetI06TIncomerBOM(cubicleType, body, res, userID, notifySchneiderParam) {

var operatingVoltageUs = body.TechCharacteristics.OperatingVoltage ? parseFloat(body.TechCharacteristics.OperatingVoltage.replace("kV", "")) : 0;
var packingType = body.TechCharacteristics.PackingType;
var cableDeviceSelected = body.cubicleArray[0].grid.CableTestDevice;
var door500MMSelected = body.cubicleArray[0].grid.depthdoor;
var cableType = body.cubicleArray[0].grid.CableType ? body.cubicleArray[0].grid.CableType : null;
var isNotifiedSchneider = notifySchneiderParam ? 1 : 0;

var params = '"' + cubicleType + '",' + operatingVoltageUs + ',"' + packingType + '",' +
    cableDeviceSelected + ',' + door500MMSelected + ',"' + cableType + '",' + userID + ',' + isNotifiedSchneider;

// Sample SP call : call usp_GetI06TIncomerBOM("I06TIncomer",6,"LandPacking",1,1,"3x1C",5,0) 
var Test = GetBOMData('usp_GetI06TIncomerBOM', params, notifySchneiderParam, res, cubicleType, body.cubicleArray[0]);
return res.json(Test);

   }

最佳答案

您可以从 GetI06TIncomerBOM 向函数 GetBOMData 传递回调,如下所示。

您可以检查一下并尝试一下,

function GetBOMData(BOMName, params, notifySchneiderParam, res, cubicleType, cubicle, callback) {   

      connection.query('CALL ' + BOMName + '(' + params + ')', function (error, rows, result){ 
       if(error) {
          callback(error);
       } else {
          callback(null, rows[0]); 
       }   
    });
}

并将 GetI06TIncomerBOM 更改如下,

function GetI06TIncomerBOM(cubicleType, body, res, userID, notifySchneiderParam) {

var operatingVoltageUs = body.TechCharacteristics.OperatingVoltage ? parseFloat(body.TechCharacteristics.OperatingVoltage.replace("kV", "")) : 0;
var packingType = body.TechCharacteristics.PackingType;
var cableDeviceSelected = body.cubicleArray[0].grid.CableTestDevice;
var door500MMSelected = body.cubicleArray[0].grid.depthdoor;
var cableType = body.cubicleArray[0].grid.CableType ? body.cubicleArray[0].grid.CableType : null;
var isNotifiedSchneider = notifySchneiderParam ? 1 : 0;

var params = '"' + cubicleType + '",' + operatingVoltageUs + ',"' + packingType + '",' +
    cableDeviceSelected + ',' + door500MMSelected + ',"' + cableType + '",' + userID + ',' + isNotifiedSchneider;

// Sample SP call : call usp_GetI06TIncomerBOM("I06TIncomer",6,"LandPacking",1,1,"3x1C",5,0) 
var Test = GetBOMData('usp_GetI06TIncomerBOM', params, notifySchneiderParam, res, cubicleType, body.cubicleArray[0], function(err, result) {
    if(err) {
        return res.status(500).send(err);
    } else {
        return res.json(result);
    }
});

}

注意:我还添加了错误处理。

关于javascript - 如何从 SP 检索的函数返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44535968/

相关文章:

node.js - Nodejs/express,优雅地关闭

node.js - 需要帮助来优化查询中的数据处理

javascript - 无法从文件名探测 mimetype

javascript - 是否有完全实现的 REST javascript 客户端?

javascript - Bootstrap 的工具提示未按示例所示样式设置?

javascript - 为什么构造函数可以调用 Javascript 中的方法?

javascript - Nodejs console.log 作为 forEach 中的回调

javascript - 我应该为这个响应式设计使用 javascript 吗?

javascript - 将加载的内容限制在 div 中

node.js - Twitter 搜索 API –since_id 和 max_id