[英]How to push to array of object based on condition?
I am trying to push responses to array based on a conditional statement. 我试图将响应推送到基于条件语句的数组。 The response is in request
details
object it would be nested object with different LOBS
so it could be both or one lob object in the request. 响应位于请求
details
对象中,它将是具有不同LOBS
嵌套对象,因此它可以是请求中的两个或一个lob对象。 If both lobs are present it works fine. 如果两个瓣都存在,则工作正常。 However, when I pass just one
combineResponse
method the code is failing because one of the arguments
is not passed. 但是,当我仅传递一个
combineResponse
方法时,代码将失败,因为未传递arguments
之一。 How can I resolve this issue or better yet, is there a better approach to handle this? 我该如何解决这个问题,或者有更好的解决办法,是否有更好的方法来解决?
main.ts 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;
}
You need a default value or a check for null or undefined. 您需要一个默认值或检查是否为null或undefined。 Try:
尝试:
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;
}
What I did: 我做了什么:
What I assumed: The await calls return null or undefined if the request fails entirely. 我的假设:如果请求完全失败,则await调用返回null或未定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.