2017-04-10 1 views
0

전자 메일을 통해 전달되는 익스프레스 앱을 사용하고 있습니다. 무슨 일이 일어나는지는 사용자에게 사물 항목 목록이 표시되고, 클릭하면 해당 항목의 정보를 사용하여 파이썬 코드가 실행된다는 것입니다. 다음은 익스프레스 앱을 통한 연결 오류

다음은
let sqlSelectBoxInformation = "SELECT DISTINCT longestDimension, box_id from box WHERE occupied ='unoccupied'"; 

     connectionBoxInformation.query(sqlSelectBoxInformation, function(err, rows, fields) { 

     if (!err) { 
      // Check to see if the user entered hashtag is found in the database 
      // Create a variable to track if the item was found 

      if(rows.length > 0){ 


      var wasFound = false; 
      // if (databaseHashtag == userEnteredHashtag) { 
      console.log(databaseHashtag); 

       var data = { 
       rows: rows, 
       userHashtag: databaseHashtag 
       } 
       res.render('delivery/chooseBox', data); 

       // Change the variable to true 
       wasFound = true; 
      } 
     else { 
      res.render('delivery/alloccupied'); 
     } 

<h3>Please begin by selecting the box size below:</h3> 

<!-- add if statement--> 

     <form method="post" action="/delivery/chooseBoxSelected"> 
          <input type="hidden" name="userHashtag" value="{{userHashtag}}"> 

      {{#each rows}} 


      <input type="hidden" name="boxSelectedValue" value="{{this.box_id}}"> 
      <input type="hidden" name="boxSelectedDimension" value="{{this.longestDimension}}"> 

      <button class="btn-dimension" type="submit"> 
       <i class="fa fa-cube" aria-hidden="true"></i> 
       &nbsp;Longest dimension {{this.longestDimension}}" 
      </button> 

       {{/each}} 

은 무엇 일어나는 것은 뷰에게있는 경로입니다 하나의 항목 만이 데이터베이스에서 뽑아 클릭시 사용자에게 목록으로 표시되는 경우 그것은 작동합니다. 여러 항목을 데이터베이스에서 가져 와서 사용자에게 표시하면 연결 오류가 발생합니다. 다음은

let sql = `SELECT box_id, cubby_id, occupied, comport 
      FROM box 
      WHERE longestDimension = ? 
      AND LOWER(box_id) = LOWER(?)`; 

    connection.query(sql, [boxSelectedDimension, boxSelectedValue] , function(err, rows, fields) { 
     if (!err) { 
      for(var i=0; i< rows.length; i++) { 
       // Make the comparaison case insensitive 
       if (rows[i].occupied == `unoccupied`) { 
       console.log("unoccupied"); 


      var comport = rows[i].comport; 
      var command = "open" + rows[i].cubby_id; 
      var commandClose = "close" + rows[i].cubby_id; 


      console.log(command); 
      console.log(comport); 


      var options = { 
      scriptPath: 'python/scripts', 
      args: [command, comport, commandClose] // pass arguments to the script here 

      }; 


      PythonShell.run('controlLock.py', options, function (err, results) { 
      if (err) throw err; 
      console.log('results: %j', results); 
      }); 

다시 한번 더 연결 오류가 하나의 항목이 렌더링되는으로 발생되지 경로 페이지 (사용자가 항목을 클릭되면,이 노선 페이지에 게시됩니다를)이지만, 양식 내에서 여러 문제가있는 것으로 보입니다. 나는이 문제가 시야에 있음을 짐작하고있다.

UPDATE

더 코드

// Using post instead of get because a form was submitted with the method post 
router.post('/', function(req, res){ 

    // Store the box location in the form of box_id 
    var boxSelectedValue= req.body.boxSelectedValue; 
    var boxSelectedDimension = req.body.boxSelectedDimension; 
    var userHashtag = req.body.userHashtag; 

enter image description here

+0

양식에 항목이 두 개 이상있을 때 생성 된 HTML (브라우저가보기/소스와 함께 표시)을 표시 할 수 있으므로 브라우저가보고있는 실제 HTML을 볼 수 있으므로 그림을 그릴 필요가 없습니다 템플릿에서 무엇이 될지 알아보십시오. 또한 마지막 코드 블록의 코드로 이어지는 경로에서 상위 수준 코드를 표시 할 수 있습니까? – jfriend00

+0

제 생각에'boxSelectedDimension'과'boxSelectedValue'는 하나 이상의 항목이 선택되었을 때 원하는 것이 아니지만 변수가 어떻게 설정되어 있는지 알려주는 충분한 코드가 없습니다. – jfriend00

+0

boxSelectedValue 및 oxSelectedDimension이 검색되는 방법을 보여주기 위해 더 많은 코드를 추가했습니다 – John

답변

1

나는 그것이 각각 별도의 치수 설정을 가지고 각 단추를 별도의 폼에 넣어하는 것입니다 해결하는 생각할 수있는 가장 간단한 방법 그 안에. 그런 다음 폼에서 가져온 차원이 눌려진 단추에 대한 유일한 것입니다.

내 핸들은 약간 녹슨 수도 있지만, 아마 이런 식으로 뭔가 :

{{#each rows}} 

    <form method="post" action="/delivery/chooseBoxSelected"> 
     <input type="hidden" name="userHashtag" value="{{userHashtag}}"> 
     <input type="hidden" name="boxSelectedValue" value="{{this.box_id}}"> 
     <input type="hidden" name="boxSelectedDimension" value="{{this.longestDimension}}"> 

     <button class="btn-dimension" type="submit"> 
      <i class="fa fa-cube" aria-hidden="true"></i> 
      &nbsp;Longest dimension {{this.longestDimension}}" 
     </button> 
    </form> 
{{/each}} 

, 당신이 지금 N 별도의 양식 (각 하나는 사실에 대처하기 위해 CSS를 조정해야 할 수도 있습니다 단추).