Я отдал процесс добавления различных функций на аутсорсинг. Почему я получаю эту ошибку, когда это делаю:
Что я могу сделать с этой ошибкой и о чем она мне говорит? Если ошибка возникает из-за того, что я вызываю функции, моя цель заключалась в том, чтобы сделать код более понятным. Знаете ли вы другой способ более эффективной фильтрации, а не то, как это делаю я?
Задачи - это массив, состоящий из заголовка, а это строка
моя ошибка:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:533:11)
at ServerResponse.header (C:\Users\Albert\Desktop\poc-market-research-app\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (C:\Users\Albert\Desktop\poc-market-research-app\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (C:\Users\Albert\Desktop\poc-market-research-app\node_modules\express\lib\response.js:267:15)
at C:\Users\Albert\Desktop\poc-market-research-app\src\controllers\companyController.ts:54:25
at C:\Users\Albert\Desktop\poc-market-research-app\node_modules\mongoose\lib\model.js:4824:16
at C:\Users\Albert\Desktop\poc-market-research-app\node_modules\mongoose\lib\model.js:4824:16
at C:\Users\Albert\Desktop\poc-market-research-app\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
at C:\Users\Albert\Desktop\poc-market-research-app\node_modules\mongoose\lib\model.js:4847:21
at C:\Users\Albert\Desktop\poc-market-research-app\node_modules\mongoose\lib\query.js:4390:11
at C:\Users\Albert\Desktop\poc-market-research-app\node_modules\kareem\index.js:135:16
at processTicksAndRejections (internal/process/task_queues.js:79:11)
мой код:
const tasksDuplicates = (data: any): boolean => {
if (
data
.map((value: any) => {
return value.title;
})
.some((val: any, idx: any, array: any) => {
return array.indexOf(val) !== array.lastIndexOf(val);
})
) {
return true;
} else {
return false;
}
};
const companyNameProof = (data: any, res: Response): void => {
CompanyName.findOne({ name: data.basicData.name }, (err, document) => {
if (err) {
logger.error(`Error ${err}`);
res.status(400).json("Error" + err);
} else {
if (document) {
let item = new Company(data);
item
.save()
.then(() => {
logger.info(`Data added`);
res.status(200).json("Data added");
})
.catch((err: any) => {
logger.error(`Error ${err}`);
res.status(400).json("Error" + err);
});
} else {
res.status(400).json("not a valid name");
}
}
});
};
const TasksProof = (data: any, res: Response): void => {
for (let i = 0; i < data.basicData.tasks.length; i++) {
Tasks.findOne({ title: data.basicData.tasks[i].title }, (err, doc) => {
if (err) {
logger.error(`Error ${err}`);
res.status(400).json("Error" + err);
} else {
if (doc) {
companyNameProof(data, res);
} else {
res.status(400).json("not a valid task");
}
}
});
}
};
export const addCompanyData = (req: Request, res: Response) => {
if (tasksDuplicates(req.body.basicData.tasks)) {
res.json("write no duplicates of tasks");
} else {
TasksProof(req.body, res);
}
};