2017-12-04 4 views
0

관리자가 양식의 표를 변경하는 것을 기반으로 데이터베이스의 데이터를 수정하려고합니다. 4. 활성 5. ID가req.body를 사용하여 Node.js의 경로에 여러 양식 데이터를 보낼 수 없습니다.

내가하면 쉽게 할 수 1. 단어 3. 을 replacementMethod 2. 교체 : 나는 업데이트 할 수있는 5 가지 정보를 보낼 필요가 아래로 내 문제는 저장 버튼입니다 req.body 객체는 하나의 키 - 값 쌍 (이름과 값)이 허용되므로 데이터의 한 부분이었습니다. 사실 삭제 버튼을 사용하여이 작업을 수행했으며 기본 키를 전송 한 다음 행을 삭제하여 정상적으로 작동합니다.

저장 버튼의 해결책은 "this"객체를 전달하는 것입니다. 그러나 router.post 함수에서도 모든 속성에 액세스하는 것은 정의되지 않은 것으로 나타나거나 개체 데이터에 액세스 할 수없는 {data : '[object Object]'}를 얻습니다. 나는 많은 다른 방법과 console.log 출력물을 시험해 보았고 인터넷을 아무 쓸모없이 검색했다. 누군가 나에게 이것을 할 올바른 방법을 보여줄 수 있습니까? 나는 이것에 반나절을 보냈고 어디에서도 얻지 못했습니다. 고맙습니다. 내 경로에

<table> 
<tr> 
    <th>Banned Word</th> 
    <th>Replacement</th> 
    <th>Replacement Method</th> 
    <th>Active</th> 
    <th>Remove Word</th> 
    <th>Save Changes</th> 
</tr> 
{{#each bannedwords}} 
<tr> 
    <td contenteditable='true'>{{this.word}}</td> 
    <td contenteditable='true'>{{this.replacement}}</td> 

    {{#ifCond this.replacementMethod 0}} 
     <td class='select'> 
      <select>   
       <option value="0" selected>Replacement</option> 
       <option value="1">Stars</option> 
       <option value="2">Grawlix</option> 
      </select> 
     </td> 
    {{/ifCond}} 

    {{#ifCond this.replacementMethod 1}} 
     <td class='select'> 
      <select>   
       <option value="0">Replacement</option> 
       <option value="1" selected>Stars</option> 
       <option value="2">Grawlix</option> 
      </select> 
     </td> 
    {{/ifCond}} 

    {{#ifCond this.replacementMethod 2}} 

    <td align='center' class='select'> 
      <select>   
       <option value="0">Replacement</option> 
       <option value="1">Stars</option> 
       <option value="2" selected>Grawlix</option> 
      </select> 
    </td> 
    {{/ifCond}} 

    {{#if this.active includeZero=false}} 
     <td><input type="checkbox" onclick="return true;" checked/></td> 
    {{else}} 
     <td><input type="checkbox" onclick="return true;" /></td> 
    {{/if}} 
    <td><button formmethod="POST" formaction="/deleteWord" type="Delete" name="word" value="{{this.word}}" class="btn btn-primary">Delete</button></td> 
    <td><button formmethod="POST" formaction="/modifyWord" type="Save" name="data" value="{{this}}" class="btn btn-primary">Save</button></td> 
</tr> 
    {{/each}} 
</table> 

내가 가진하는 index.js : 마지막으로

router.post('/modifyWord',isAdminMiddleware(), function(req, res, next){ 
modifyBannedWord(req); 
res.redirect('/admin'); 
}); 

그리고 :

function modifyBannedWord(req){ 
const db = require('../db.js'); 
var temp = req.body; 
db.query('UPDATE from badwords set word = ?, replacement = ?, replacementMethod = ?, active = ? , WHERE id = ?' , [temp.data.word , temp.data.replacement, temp.data.replacementMethod, temp.data.active, temp.data.id], function(err, results){ 
}); 
} 

를 AS를 제외하고는 modifyBannedWord 기능하지 않을 수 있습니다 맞다. var temp = req.body). 나는 여러 번 그것을 바꿨는데 그것이 어떤 길인지 기억이 안나지만 그럼에도 불구하고 나는 붙어있다.

답변

0

당신이

<select name="somename"></select> 

같은 그리고 당신의 경로에서 선택 태그 이름을해야합니다

var somevar = req.body.somename; 
관련 문제