我在node.js中的代码遇到麻烦
我在异步函数中有一个Ajax调用。当我使用在const调用之前指定的选项进行调用时,程序运行良好。
但是,当我为另一个脚本中定义的选项调用函数时,则调用运行出错。
为什么会这样?
//编辑//
const request = require('request-promise');
const logger = require('../../../libs/log');
const kasMock = require('../../mock/kasMock')
const remote = require('./remote')
var proxyUrl = "***"
var endstelle = ""
const queryCount = ""
var ticket = ""
const auth = {"api": {username: 'api', password: '***'}, "jira":{username: '***', password: '***}}
var result = {}
var uri = {}
var method = {"put":"PUT", "get":"GET"}
/** Get all tickets */
app.get('/test', function (req, res) {
res.send("Test")
})
app.get('/startDiagnosis', function (req, res) {
//res.send('starte Diagnose')
var param = req.query
ticket = param.ticket
endstelle = param.endstelle
resultKas = pullKAS(endstelle)
uri = {"jiraGetProperties":'***/rest/api/2/issue/' + ticket + '/properties/', "jiraSetProperty": '***/rest/api/2/issue/' + ticket + '/properties/kas-', "kasGetResult":'http://*** + '?_format=json'}
resultKas = pullKAS(endstelle)
let queryCount = jiraGetQueryCount(param.ticket,res)
logger.info("Querycount: " + queryCount)
queryCount.then(function(result){
updateDiagnoseIntern(getResultData(resultKas), param.ticket,result+1)
});
})
async function jiraGetQueryCount(ticket,res) {
//With the commented options the code works fine.
//But when I call the remote.ajaxCallOptions an error occurs.
/*const options = {
method: method.get
,rejectUnauthorized: true
,uri: uri.jiraGetProperties
,auth: auth.jira};
*/
const options = remote.ajaxCallOptions(method.get,uri.jiraGetProperties, auth.jira);
try {
response = await request(options);
res.send(response)
let count = getQueryCount(response)
logger.info('Get Info: ' + count);
return(count)
}
catch (error) {
logger.info("Ein Fehler ist aufgetreten")
return("error")
}
}
在remote.js中,选项已定义:
module.exports = {
ajaxCallOptionsBody: function(method,uri, auth={}, body={}){
return {
method: method
,rejectUnauthorized: true
,json: true
,uri:uri
,auth: auth
,body: body
}}
,ajaxCallOptions: function(method,uri, auth={}){
return {
method: method
,rejectUnauthorized: true
,json: true
,uri:uri
,auth: auth
}
}};
控制台输出:
{"message":"Server started on port: 8181","level":"info","timestamp":"2019-02-23T10:40:01.096Z"}
{"message":"HTTP-Request: GET /rest/example/startDiagnosis?ticket=ITSM-45620&endstelle=WELO-9001","level":"info","timestamp":"2019-02-23T10:40:03.441Z"}
{"message":"Querycount: [object Promise]","level":"info","timestamp":"2019-02-23T10:40:03.447Z"}
{"message":"Ein Fehler ist aufgetreten","level":"info","timestamp":"2019-02-23T10:40:03.685Z"}
{"message":"Querycount in Diagnose: error1","level":"info","timestamp":"2019-02-23T10:40:03.687Z"}
{"message":"Update Ticket successfully:","level":"info","timestamp":"2019-02-23T10:40:03.689Z"}
{"message":"HTTP-Response: 200, runtime: 249ms","level":"info","timestamp":"2019-02-23T10:40:03.691Z"}
有时间问题吗?
Thx
费利克斯