我需要从API1获取“data”:3的值,如果字段“data”的值大于或等于3,则检查API2 . 我需要创建一个仅使用API2字段的新API,通过过滤条件,请检查所需的Json:
杰森:
[
{
"fieldid": "0001",
"data": 3 , ---- API 1
"field7": "2018-12-06T11:49:52.389Z"
},
[
{
"field1": "E004",
"data": 3, --- api 2
"field7": "2018-12-06T11:49:52.389Z"
},
{
"field1": "E005",
"data": 2, ---- api 2
"field7": "2018-12-06T11:49:52.389Z"
}
],
]
功能:
n getlistofStaffs(req, callback) {
log.info(path.basename(module.filename), "List Staffs :: getlistofStaffs()");
var listofStaffsAPI = api url;
const requestOptions = {
url: listofStaffsAPI,
json: true
};
request(requestOptions, function (err, res, body) {
if (err) {
return callback(true, null);
} else if (res.statusCode == 200) {
var clearancesstaff=body[0].clearanceLevel;
var staffClearanceId = body[0].staffClearanceId;
return callback(null, {staffClearanceId:body[0].staffClearanceId,clearancesstaff:body[0].clearanceLevel});
}
});
}
期望的输出JSON:
[ {
"fieldid": "0001",
"data": 3 ,
"field7": "2018-12-06T11:49:52.389Z"
}
]
谢谢
1 回答
因为're using the async library, you'll想要使用
.waterfall()
方法,该方法将回调数据从一个回调传递给下一个函数的输入 . 由于我会证明签名,我认为这对你要做的事情是必要的,但是留下细节给你 .如果您能够这样做,如果您能够使用最后几个版本的节点中提供的async / await功能,则可能会更容易遵循您的代码 . 如果可以,那么你只需要确保你的API调用返回Promises,然后你可以这样做:
如果您不想在路线中使用try..catch块,还可以使用asynchandler模块 .
EDIT
正如我的评论中所提到的,您需要根据当前设计更新getListofEvents函数以期望三个参数:
当然,您的示例代码实际上并不使用该数据,因此我添加了一个console.log来显示它 .