시간이 지나면 큰 총을 불러내 어서 알아낼 수 없습니다.
노드에 간단한 CRUD API가 있습니다. 프론트 엔드에서 EJS를 사용하고 있습니다. 본질적으로 모든 레코드 테이블을 표시하는 selectAllRecords
보기가 있습니다. 레코드를 편집하려면 각 레코드 옆에 단추가 있습니다. 버튼을 클릭하면 editrecord.ejs
페이지로 리디렉션되고 각 레코드가 입력란에 값으로 표시되는 단일 레코드의 API에 도달합니다. 거기에서, 나는 XMLHttpRequest가 데이터베이스를 갱신하라는 요청을하는 onclick 메소드를 가지고있다. 그러나 오류가 발생합니다. 500 (Internal Server Error)
- 실종 된 것은 매우 간단합니다.하지만 그 사실을 알 수는 없습니다.NodeJS 업데이트 API - 내부 서버 오류
도움을 주시면 대단히 감사하겠습니다. 아래 코드 : I 업데이트 버튼을 쳤을 때,
function updateCandidate(req, res, next) {
var candID = parseInt(req.params.id);
console.log('hit update');
console.log('name ' + req.body.name);
db.none('update cands set name=$1, email=$2 where id=$3',
[req.body.name, req.body.email, candID])
.then(function() {
var candID = candID
var name = data.name;
var email = data.email;
res.render("edited", {"candID":candID, "name":name, "email":email});
})
.catch(function (err) {
return next(err);
});
}
잠재적으로 중요한 점과합니다 (someFunc을 실행
<script type="text/javascript">
function someFunc() {
var id = <%= id %>;
var url = '/api/edit/' + candID;
console.log('url ' + url);
var name = document.getElementById("name").value;
var email = document.getElementById("email").value;
var data = {
name: name,
email: email,
}
var json = JSON.stringify(data);
console.log('json ' + json);
var xhr = new XMLHttpRequest();
xhr.open("PUT", url, true);
xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');
xhr.send(json);
};
내 queries.js에
가 파일 : 내보기에우선) 함수에서 dev 툴 로그는 'api/edit/50'(또는 ID가 무엇이든) 및 '500 (내부 서버 오류)'에 대한 PUT 요청을 보여줍니다. - 'getAllRecords'보기를 하드로드하면 업데이트가 반영됩니다. 렌더링 또는 리디렉션 문제 (둘 다 시도했습니다)
,363,210수정 제안으로
, 나는이 updateCandidate 방법에서 렌더링 제거,하지만 난 여전히 500 내부 서버 오류가 발생합니다. devtools는 PUT 요청이 올바른 URL을 치고 있다는 것을 보여 주므로이 기능이 올바르게 작동하지 않는 이유를 잘 모릅니다. 아래의 업데이트 코드 ...
function updateCandidate(req, res, next) {
var candID = parseInt(req.params.id);
db.none('update cands set name=$1, email=$2, client=$3, jobtitle=$4, question1=$5, question2=$6, question3=$7 where id=$8',
[req.body.name, req.body.email, req.body.client,
req.body.jobtitle, req.body.question1, req.body.question2, req.body.question3, candID])
.then(function (data, err) {
res.status(200)
.json({
status: 'success',
message: `Edited Candidate`
});
})
.catch(function (err) {
return next(err);
});
}
우편 배달부와 같은 도구로 API를 테스트 했습니까? – kkreft
무엇이 오류입니까? – aug2uag
나는 CURL 요청으로 테스트를했는데 기능적으로 잘 작동하는 for 루프에 대해 완전히 관련없는 페이지에서 이상한 오류가 발생했습니다. db가 업데이트되었습니다. – jsw324