저는 Node.js를 처음 사용합니다. 저는 iPhone 백엔드 서버 백엔드로 사용하고 있습니다. 나는 JSON으로 POST를 호출 해요 : {FIRSTNAME : "밥", 이메일 : [email protected]}이 (Express와 몽구스를 사용하여)처럼Node.js 백엔드에서 iPhone 프론트 엔드로 JSON 오류를 보내는 중 : "오류 : 전송 후 헤더를 설정할 수 없습니다."
는 Node.js를 코드는 같습니다
var User = new Schema({
firstname : { type: String, required: true}
, email : { type: String, required: true, unique : true}
});
var User = mongoose.model('User', User);
그리고 게시물에 대한
app.post('/new/user', function(req, res){
// make a variable for the userData
var userData = {
firstname: req.body.firstname,
email: req.body.email
};
var user = new User(userData);
//try to save the user data
user.save(function(err) {
if (err) {
// if an error occurs, show it in console and send it back to the iPhone
console.log(err);
res.json(err);
}
else{
console.log('New user created');
}
});
res.end();
});
는 지금, 나는 동일한 이메일과 중복 사용자를 만들려고 해요. 전자 메일에있는 "고유 한"제약으로 인해이 오류가 발생할 것으로 예상됩니다.
그러나 node.js 프로세스는 "오류 : 보낸 후 헤더를 설정할 수 없습니다."라는 메시지와 함께 종료됩니다.
iPhone 클라이언트에 이와 같은 시나리오로 메시지를 보내고 싶습니다. 예를 들어, 위의 경우, 새로운 사용자 생성 결과 (성공 또는 실패)를 말하는 JSON을 iphone으로 되돌려 보내고 싶습니다.
감사합니다.
:
그런 식으로, 당신은 단지 JQuery와 함께 같은 것을 제공합니다, 당신의 HTTP 가져 오기에서 메시지를 구문 분석해야합니다. 그래서 아마도 res.send와 res.json이 스스로 res.end를 호출할까요? – kurisukun
나는 생각하지 않는다. 코드에서 비동기 적으로 실행되기 때문에'res.end'보다는'res.end'가 먼저 호출됩니다. – balazs