Почему появляется эта ошибка: Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту - PullRequest
0 голосов
/ 04 августа 2020

Я отдал процесс добавления различных функций на аутсорсинг. Почему я получаю эту ошибку, когда это делаю:

Что я могу сделать с этой ошибкой и о чем она мне говорит? Если ошибка возникает из-за того, что я вызываю функции, моя цель заключалась в том, чтобы сделать код более понятным. Знаете ли вы другой способ более эффективной фильтрации, а не то, как это делаю я?

Задачи - это массив, состоящий из заголовка, а это строка

моя ошибка:

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);
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...