![](/img/trans.png)
[英]dynamically push object into nested array based on key,value pair condition
[英]How to push to array of object based on condition?
我试图将响应推送到基于条件语句的数组。 响应位于请求details
对象中,它将是具有不同LOBS
嵌套对象,因此它可以是请求中的两个或一个lob对象。 如果两个瓣都存在,则工作正常。 但是,当我仅传递一个combineResponse
方法时,代码将失败,因为未传递arguments
之一。 我该如何解决这个问题,或者有更好的解决办法,是否有更好的方法来解决?
main.ts
private async execute(@Request() request: ExpressRequest): Promise<any> {
let _combineData: any = [];
const accountBalanceRequest = request.body.getAccountBalanceRequest;
const LOB = accountBalanceRequest.details.lineofBusiness;
let _dataAdmin: any = {};
let _dataUser: any = {};
try {
if (LOB === "ADMIN") {
_dataAdmin = await this.Admin.adminRequestHandler(accountBalanceRequest);
}
if (LOB === "USER") {
_dataUser = await this.User.userRequestHanlder(request);
}
const combinedResponses = this.combineResponse(_dataAdmin, _dataUser, request);
_combineData = combinedResponses;
} catch (err) {
return err;
}
return _combineData;
}
private combineResponse(AdminResponse: any, UserResponse: any, request: any): any {
const combinedResponses: any = [];
let finalResponse: any = {};
const refID: string = request.body.header.serviceContext.refID;
const tokenID: string = request.body.header.serviceContext.tokenID;
combinedResponses.push(AdminResponse, UserResponse);
if (AdminResponse.header.statusCode === "0000" && UserResponse.header.statusCode === "0000") {
finalResponse = {
getAccountBalanceResponse: {
header: request.body.header),
details: combinedResponses
}
};
}
if (AdminResponse.header.statusCode !== "0000" && UserResponse.header.statusCode !== "0000") {
finalResponse = {
getAccountBalanceResponse: {
header: {
statusCode: "9999",
statusDesc: "partial Error",
refID,
tokenID
},
details: combinedResponses
}
};
}
return finalResponse;
}
您需要一个默认值或检查是否为null或undefined。 尝试:
private async execute(@Request() request: ExpressRequest): Promise<any> {
let _combineData: any = [];
const accountBalanceRequest = request.body.getAccountBalanceRequest;
const LOB = accountBalanceRequest.details.lineofBusiness;
let _dataAdmin: any;
let _dataUser: any;
try {
if (LOB === "ADMIN") {
_dataAdmin = await this.Admin.adminRequestHandler(accountBalanceRequest);
}
if (LOB === "USER") {
_dataUser = await this.User.userRequestHanlder(request);
}
const combinedResponses = this.combineResponse(_dataAdmin, _dataUser, request);
_combineData = combinedResponses;
} catch (err) {
return err;
}
return _combineData;
}
private combineResponse(AdminResponse: any, UserResponse: any, request: any): any {
const combinedResponses: any = [];
let finalResponse: any = {};
const refID: string = request.body.header.serviceContext.refID;
const tokenID: string = request.body.header.serviceContext.tokenID;
if (AdminResponse) {
combinedResponses.push(AdminResponse);
}
if (UserResponse) {
combinedResponses.push(UserResponse);
}
if (AdminResponse.header.statusCode === "0000" && UserResponse.header.statusCode === "0000") {
finalResponse = {
getAccountBalanceResponse: {
header: request.body.header),
details: combinedResponses
}
};
}
if ((!AdminResponse || AdminResponse.header.statusCode !== "0000") || (!UserResponse || UserResponse.header.statusCode !== "0000")) {
finalResponse = {
getAccountBalanceResponse: {
header: {
statusCode: "9999",
statusDesc: "partial Error",
refID,
tokenID
},
details: combinedResponses
}
};
}
return finalResponse;
}
我做了什么:
我的假设:如果请求完全失败,则await调用返回null或未定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.