관리자가 양식의 표를 변경하는 것을 기반으로 데이터베이스의 데이터를 수정하려고합니다. 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). 나는 여러 번 그것을 바꿨는데 그것이 어떤 길인지 기억이 안나지만 그럼에도 불구하고 나는 붙어있다.