업데이트 : 며칠 전에 이것을 게시하고 답변을 얻을 수 없었습니다. 아무도 도울 수 있습니까? 왜이 오류가 발생하는지 알 수 없습니다. 'null의'username '속성을 설정할 수 없습니다. 현재 사용자 ID를 캡처하기 위해 실행중인 코드가 작동하지 않는 것 같지만 여기서 어디서 잘못 될지 알 수 없습니다.업데이트 사용자 모델 경로가 작동하지 않는 이유는 무엇입니까 (mongodb)?
mongodb 사용자 모델의 업데이트 경로가 작동하지 않는 이유는 무엇인지 알 수 없습니다.
그래서 사용자는 현재 사용자 세부 정보가 미리로드 된 양식이 표시되고 양식을 편집 할 수 있으며 사용자 스키마가 업데이트되어야한다는 생각이 분명합니다.
router.get("/profile", function(req, res){
res.render("profile")
})
사용자 스키마는 다음과 같습니다 :
<div class="row">
<div id="user-image-preview" class="col-md-4 col-sm-12 user-image-preview"> </div>
<div class ="reg-container-form col-md-8 col-sm-12">
<div class="jumbotron form"><h2><i class="fa fa-user-plus" aria-hidden="true"></i> Update profile</h2></div>
<form id="register" action = "/register" method="POST">
<div class="form-group has-feedback">
<i class="fa fa-user" aria-hidden="true"></i>
<label for="username">Username</label>
<input id="username" type = "text" class = "form-control" value = "<%=currentUser.username%>" name="username">
</div>
<div class="form-group has-feedback">
<i class="fa fa-envelope" aria-hidden="true"></i>
<label for="email">Email</label>
<input id="email" type = "email" class = "form-control" value = "<%=currentUser.email%>" name="email">
</div>
<div class="form-group">
<div><i class="fa fa-picture-o" aria-hidden="true"></i> <label for="img">Image</label></div>
<input id="user-image-set" type = "text" class ="form-control" placeholder = "Enter image URL" name = "image">
<a href="#"><div id="eye-button"><i id="preview-icon" class="fa fa-eye" aria-hidden="true"></i></div></a>
</div>
<button id="submit-login" type ="submit" class="btn btn-primary btn-lg disabled">Confirm changes</button>
</form>
</div>
</div>
양식은 다음과 같은 경로를 통해 액세스 할 수 있습니다 :
가 여기 내 프로필 편집 양식의
var UserSchema = new mongoose.Schema({
username: String,
password: String,
image: String,
email: String
});
그래서 기본적으로, 나는 사용자가 원하는 입력란에 매개 변수를 다시 입력하고 확인을 클릭 한 다음 스키마가있는/blogs로 리디렉션됩니다. 업데이트되었습니다.
나는 길을 쓰려고했지만 솔직히 말해서 첫 줄에서 길을 잃었다. 동적으로 생성 된 요소에 대한 업데이트 경로를 이미 만들었지 만 (주석, 블로그)이 URL의 id 등을 통과하는 것과는 다른 것으로 보입니다. 나는 다음과 같이 findUserById 방법을 사용하여 시도했다
확실하지 곳 ... 여기에서 시작 :
router.post("/update-user", function(req, res, next){
User.findByIdAndUpdate(req.body.user_id, req.body.user, function (err,updatedUser){
if(err){
res.redirect("/profile")
console.log(err);
} else {
res.redirect("/blogs");
}
})
})
이 코드는 (리디렉션에서와 같이 블로그 /에) 잘 실행하지만 모델 updae하지 않습니다 . 그래서 updatedUser.save()를 삽입 시도했다 :
router.post("/update-user", function(req, res, next){
User.findByIdAndUpdate(req.body.user_id, req.body.user, function(err,updatedUser){
if(err){
res.redirect("/profile")
console.log(err);
} else {
updatedUser.save();
res.redirect("/blogs");
}
})
})
이 다음과 같은 오류 발생 : 다음 다음과 같이 현재 사용자 ID 찾기 위해 코드를 변경 시도
TypeError: Cannot read property 'save' of null
는 (다음의 조언 아래 접수를) :
router.post('/update-user',function (req,res,next){
User.findOne({_id: req.body._id},function (err,user){
if(err){
res.redirect("/profile")
} else {
user.username = req.body.username;
user.email = req.body.email;
user.image = req.body.image;
user.save()
}}
)});
이 다음과 같은 오류 발생 :
TypeError: Cannot set property 'username' of null
을
여기에 무슨 일이 벌어지는 지 잘 모르겠다!
건배를 처리 오류 돌볼 수 확신 ! 양식 작업은 어떻습니까? 내 HTML 형식으로 보입니까? – DaveB1
네, 당신의 행동이 당신의 router.post와 일치하는지 확인하십시오.어떻게 서버를 구성했는지 모르겠지만 양식에 urlencoded enctype을 사용해야 할 수도 있습니다. –
안녕하세요, 다시 findByIdAndUpdate 메서드를 사용하여 업데이트 경로를 구현하려했으나 (위의 편집 참조) 오류가 발생했습니다. 솔직히 말해서, 나는 업데이트 경로의 논리에 대해 여전히 약간 개략적이다. 덧글 및 기타 동적으로 생성 된 내용을 업데이트하는 것으로 얻지 만, 사용자를 업데이트 할 때 어떤 이유로 공백을 그리는 것입니다. – DaveB1