#javascript #node.js #typescript
#javascript #node.js #typescript
Вопрос:
У меня есть следующий код, он пытается прочитать текстовый текст, преобразовать его в массив, а затем преобразовать в json, чтобы сохранить его в БД, но при вызове контроллера, я пытаюсь запустить функцию SaveReferences, он отправляет мне эту ошибку: UnhandledPromiseRejectionWarning: Ошибка типа: не удается прочитать свойство ‘service’ неопределенного
Кроме того, пришлите мне это: Обещание { Ошибка типа: не удается прочитать свойство ‘service’ неопределенного типа в GettingInfo.SaveReferences в GettingInfo.Readfile в 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;
}
Ответ №1:
В 4-й строке SaveReferences i
не определено
let helper = data[i].service;
Это должно быть
let helper;
В качестве помощника назначается внутри цикла for
Ответ №2:
**let i
let orderField = 0;
let helper = data[i].service;**
Этот блок кода вызывает ошибку. Вы объявили i
, но не инициализировали его. Таким образом, это значение по умолчанию undefined
. И затем вы пытаетесь сделать data[i].service
, что переводится в data[undefined].service