我尝试使用JavaScript在移动服务中调用另一个API,但收到此错误:
脚本错误' /api/*api_name*.js'。 TypeError:对象函数(响应){ [外部代码] at exports.post.httpRequest.get.mssql.query.success.mssql.query.success(D:\ home \ site \ wwwroot \ App_Data \ config \ scripts \ api \ * api_name * .js:49:36) [外部代码]
API(我称之为另一个API函数):
var api_name = require('../api/*api_name*.js');
exports.post = function(request, response) {
api_name.post(request, function(response) {
console.log("test")
})
};
另外,使用iOS Azure SDK调用* api_name * .js也没问题。
所以,我无法弄清楚如何从另一个调用一个JS API。
如果有人能解释我会很棒。谢谢!
答案 0 :(得分:2)
我假设您的自定义API名称不包含'*'字符,并且您已使用'* api_name *'替换自定义API的实际名称 - 您不能在加载的模块名称中使用通配符有要求。
虽然应该可以直接要求另一个API模块,但建议您将公共代码重构为共享模块。将其放在站点的/ shared文件夹中,并使用以下语法引用该模块:
var sharedModule = require('../shared/sharedModule');
如果您需要传递自定义成功或错误处理程序,您可以执行以下操作:
API / api1.js
var shared = require('../shared/sharedModule');
exports.get = function(request, response) {
shared(request, response, 'table1', function(results) {
if(results.length == 1)
response.send(200, results[0]);
}
});
};
API / api2.js
var shared = require('../shared/sharedModule');
exports.get = function(request, response) {
shared(request, response, 'table2', function(results) {
if(results.length == 5)
response.send(200, "Correct number of records");
else
response.send(400, "Incorrect number of records");
});
};
共享/ sharedModule.js
module.exports = function (request, response, table, success) {
request.service.mssql.query("SELECT COUNT(*) FROM " + table, {
success: success,
error: function (error) {
response.send(500, error);
}
});
}
这为每次调用使用相同的错误处理程序,您也可以每次都传递一个自定义错误处理程序。