我有一个函数,在其中调用 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/