连接 ECONNREFUSED 127.0.0.1:443。然后方法在前面的方法执行完成之前执行
connect ECONNREFUSED 127.0.0.1:443. Then method executes before the preceding method completes execution
我正在尝试将项目放入本地 dynamodb。我尝试登录以检查问题出在哪里,其中一个问题是,或者可能是 then
方法在前面的方法完成执行之前正在执行。下面是调用 addCompany method in another class
的 Controller
class 代码
1:来自控制器的 registerCompany() 方法 class
public async registerCompany(data, TableName) : Promise <HttpResponse>{
return new Promise((resolve, reject) => {
this.registerCompanyService = new RegisterCompanyService();
let companydata = this.registerCompanyService.addCompany(data,TableName).then(result =>{ //then is being executed before the addCompany finishes its execution
if(!result){
console.log("All data not provided")
return reject(this.createBadRequestResponse())
}
console.log(`The type of return data is ${typeof result}`)
resolve();
});
if(companydata!=null)
{
console.log(`The company data is ------> ${companydata}`)
return this.createSuccessResponse(companydata);
}
else {
return this.createInternalServerErrorResponse();
}
})
}
2:来自 CompanyService 的 addCompany() 方法 class
public async addCompany(companyData: Company, TableName): Promise < any > {
this.companyDao = new CompanyDao();
var params = {
TableName,
Item: {
key1: companyData.key1,
key2: companyData.key2,
key3: companyData.key3,
}
}
console.log(`The params stringified before sending to dao are -------> ${JSON.stringify(params)}`);
this.companyDao.addCompany(params);
}
3:来自 DAO 的 addCompany() 方法 class 将数据插入 DB
public async addCompany(params): Promise < any > {
console.log(`Inside DAO params-------> ${params.item}`);
let putItem = new Promise < any > ((resolve, reject) => {
this.dynamodbClient.put(params, (error, result) => {
console.log(`Inside put params --------> ${params.item}`)
if (error) {
console.error(`Unable to add item. Error ---> ${JSON.stringify(error)}`)
reject(error);
} else {
console.log(`Added Item -----> ${params.Item}`)
resolve(true)
}
})
})
const result = await putItem;
console.log(`This is the final result -------->${result}`);
return result;
public async addCompany(companyData: Company, TableName): Promise < any > {
this.companyDao = new CompanyDao();
var params = {
TableName,
Item: {
key1: companyData.key1,
key2: companyData.key2,
key3: companyData.key3,
}
}
console.log(`The params stringified before sending to dao are -------> ${JSON.stringify(params)}`);
//When calling a promise you either return it or wait for its completion using await.
await this.companyDao.addCompany(params);
//OR return it
return this.companyDao.addCompany(params);
}
您实际上是在进行异步调用,但不是将 Promise 从 DAO class 返回到控制器。所以调用方法实际上没有办法知道来自 DAO 的 addCompany 是否已解析。此外,避免使用相同的方法名称,即使它们位于不同的 classes/services.
我不能 100% 确定您的 addCompany(DAO) 方法。祝你好运 ;)
我正在尝试将项目放入本地 dynamodb。我尝试登录以检查问题出在哪里,其中一个问题是,或者可能是 then
方法在前面的方法完成执行之前正在执行。下面是调用 addCompany method in another class
Controller
class 代码
1:来自控制器的 registerCompany() 方法 class
public async registerCompany(data, TableName) : Promise <HttpResponse>{
return new Promise((resolve, reject) => {
this.registerCompanyService = new RegisterCompanyService();
let companydata = this.registerCompanyService.addCompany(data,TableName).then(result =>{ //then is being executed before the addCompany finishes its execution
if(!result){
console.log("All data not provided")
return reject(this.createBadRequestResponse())
}
console.log(`The type of return data is ${typeof result}`)
resolve();
});
if(companydata!=null)
{
console.log(`The company data is ------> ${companydata}`)
return this.createSuccessResponse(companydata);
}
else {
return this.createInternalServerErrorResponse();
}
})
}
2:来自 CompanyService 的 addCompany() 方法 class
public async addCompany(companyData: Company, TableName): Promise < any > {
this.companyDao = new CompanyDao();
var params = {
TableName,
Item: {
key1: companyData.key1,
key2: companyData.key2,
key3: companyData.key3,
}
}
console.log(`The params stringified before sending to dao are -------> ${JSON.stringify(params)}`);
this.companyDao.addCompany(params);
}
3:来自 DAO 的 addCompany() 方法 class 将数据插入 DB
public async addCompany(params): Promise < any > {
console.log(`Inside DAO params-------> ${params.item}`);
let putItem = new Promise < any > ((resolve, reject) => {
this.dynamodbClient.put(params, (error, result) => {
console.log(`Inside put params --------> ${params.item}`)
if (error) {
console.error(`Unable to add item. Error ---> ${JSON.stringify(error)}`)
reject(error);
} else {
console.log(`Added Item -----> ${params.Item}`)
resolve(true)
}
})
})
const result = await putItem;
console.log(`This is the final result -------->${result}`);
return result;
public async addCompany(companyData: Company, TableName): Promise < any > {
this.companyDao = new CompanyDao();
var params = {
TableName,
Item: {
key1: companyData.key1,
key2: companyData.key2,
key3: companyData.key3,
}
}
console.log(`The params stringified before sending to dao are -------> ${JSON.stringify(params)}`);
//When calling a promise you either return it or wait for its completion using await.
await this.companyDao.addCompany(params);
//OR return it
return this.companyDao.addCompany(params);
}
您实际上是在进行异步调用,但不是将 Promise 从 DAO class 返回到控制器。所以调用方法实际上没有办法知道来自 DAO 的 addCompany 是否已解析。此外,避免使用相同的方法名称,即使它们位于不同的 classes/services.
我不能 100% 确定您的 addCompany(DAO) 方法。祝你好运 ;)