Express Route foreach и if / else statment дают мне оба ответа if и else - PullRequest
0 голосов
/ 05 мая 2020

//Modules
const express = require('express'); 

//Initializing
let router = express.Router()

//Midlewares
router.use(express.json())

//My Vacumms
let acs = [
  {
    id:1,
    name:"acs1",
    actionType:{
      state:false,
      temperature:1
    }
  },
  {
    id:2,
    name:"acs2",
    actionType:{
      state:false,
      temperature:1
    }
  },
  {
    id:3,
    name:"acs3",
    actionType:{
      state:false,
      temperature:1
    }
  }
]

//Main Page /Vacuums
router.get('/:id/:actionType/:OfOn', (req, res)=>{
  let Adress = req.params
  new Promise
  acs.forEach(Vacu =>{
    if(Adress.id == parseInt(Vacu.id)){
      for(type in Vacu.actionType){
          if(Vacu.actionType[type] == Vacu.actionType[Adress.actionType]){
            Vacu.actionType[type] = Adress.OfOn
            res.json(acs)
          }else if(Vacu.actionType[Adress.actionType] == undefined){
            res.json("Action type not found")
          }
      }
    }else{
      console.log("Wtf is going on!!! D:D::DD::D:D");
    }
  })
  
})

module.exports = router

ОШИБКА: Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту на ServerResponse.setHeader (_http_outgoing. js: 526: 11) в ServerResponse.header (C: \ Users \ Desktop \ NodeTutorial \ HomeWork2 \ node_modules \ express \ lib \ response. js: 771: 10) в ServerResponse.send (C: \ Users \ Desktop \ NodeTutorial \ HomeWork2 \ node_modules \ express \ lib \ response. js: 170: 12) на ServerResponse. json (C: \ Users \ Desktop \ NodeTutorial \ HomeWork2 \ node_modules \ express \ lib \ response. js: 267: 15) в C: \ Users \ Desktop \ NodeTutorial \ HomeWork2 \ Routers \ acs. js: 49: 17 в Array.forEach () в C: \ Users \ Desktop \ NodeTutorial \ HomeWork2 \ Routers \ acs. js: 42: 7 в Layer.handle [как handle_request] (C: \ Users \ Brian \ Desktop \ NodeTutorial \ HomeWork2 \ node_modules \ express \ lib \ router \ layer. js: 95: 5) в следующий (C: \ Users \ Desktop \ NodeTutorial \ HomeWork2 \ node_modules \ express \ lib \ router \ route. js: 137: 13) в Route.dispatch (C: \ Users \ Desktop \ NodeTutorial \ HomeWork2 \ node_modules \ express \ lib \ router \ route. js: 112: 3) Wtf происходит !!! D: D :: DD :: D: D Что-то происходит !!! D: D :: DD :: D: D

Когда я тестирую с помощью Postman, все работает нормально, но я все равно получаю эти ошибки ... Я не знаю, что у меня не так!

// я хочу управлять своим массивом acs через адресную строку с помощью request.params!

1 Ответ

0 голосов
/ 05 мая 2020

Обычно это происходит, когда вы пытаетесь ответить дважды. Думаю, что проблема в этом л oop. Попробуйте сломать l oop после того, как вы отправите ответ

  if(Adress.id == parseInt(Vacu.id)){
  for(type in Vacu.actionType){
      if(Vacu.actionType[type] == Vacu.actionType[Adress.actionType]){
        Vacu.actionType[type] = Adress.OfOn
        res.json(acs)
        break
      }else if(Vacu.actionType[Adress.actionType] == undefined){
        res.json("Action type not found")
        break
      }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...