未处理的承诺拒绝警告类型错误:无法读取未定义的属性'property'



我有以下代码,它试图读取txt,将其转换为数组,然后将其转换成json,将其保存在数据库中,但在调用控制器时,我试图运行SaveReferences函数,它会向我发送此错误:未处理的PromiseRejectionWarning:TypeError:无法读取未定义的属性"service">

另外,给我这个:承诺{TypeError:无法在GettingInfo中读取未定义的属性"service"。在GettingInfo保存引用。ReferenceController.saved 上的读取文件

export interface Dataconf{
service:number;
name:string;
ref:string
}

export class GettingInfo {

constructor(private referenceService: ReferenceService) {
}

Readfile = () => {

const file = path.resolve(__dirname, '../../../dist/entity/PRUEBA.txt')
try {
const data = fs.readFileSync(file, 'utf-8');
const lines = data.split("n")
let values = []
let bi = []
lines.forEach(line => {
line.trim()
values = line.split("|", 6).map(a => a.trim());
bi.push(values)
console.log(bi)
})
const convert = this.ConditionData(bi)
console.log(convert)
const save = this.SaveReferences(convert)
console.log(save)

} catch (err) {
console.error(err), "something has happened to the file";
}
}

ConditionData(values): Array<Dataconf> {
let resultado = [];
values.forEach(arreglo => {
let ref = 'ref';
for (let i = 3; i < arreglo.length; i++) {
if (arreglo[i].length > 0) {
let obj = {
service: parseInt(arreglo[0]),
name: arreglo[1]
}
obj[ref] = arreglo[i];
resultado.push(obj);
}
}
});
console.log("resultado funcionConditionData", resultado)
return resultado;
}
async SaveReferences(data: Array<Dataconf>) {
console.log("array", data)
let i
let orderField = 0;
let helper = data[i].service;
for (i = 0; i <= data.length; i++) {
if (data[i].service != helper) {
helper = data[i].service;
orderField = 0
try {
let res = await this.referenceService.createReference({
service: data[i].service,
name: `ref${i}`,
label: data[i].ref,
longitud: 0,
order: orderField
});
} catch (e) {
console.error(e);
}
}
}
return data;
}

在SaveReferences中,第4行i未定义

let helper = data[i].service;

应该是

let helper;

由于在for循环内部分配了助手

**let i
let orderField = 0;
let helper = data[i].service;**

这段代码导致错误。您声明了i,但没有初始化它。所以它的默认值是undefined。然后你试图做data[i].service,它翻译成data[undefined].service

最新更新