我正在構建Web應用程序來跟蹤棒球運動員。當前與球員相關的唯一數據屬性是fName和lName。我正在使用Node.js Express 4,貓鼬和翡翠。當你點擊某個玩家時,我的get request功能會正常運行,它將把你帶到localhost:3000/player /:id,玩家信息被正確加載到視圖中。我遇到了我的post方法問題並且實際更新玩家信息提交。與其更新播放器,我的發佈方法只是添加一個新播放器。試圖用mongoose更新mongodb中的記錄。我的應用程序正在使用Node.js和Express 4
這裏是,這似乎是正常的GET請求的代碼:
router.get('/:id', function(req,res){
Player.find({_id: req.params.id}, function(err, player){
if(err){
res.redirect('/error');
}else{
res.render(
'editPlayer',
player[0]
);
}
});
});
這裏是正在創造一個新的球員,而不是更新當前播放的崗位代碼:
router.post('/:id', function(req,res){
Player.where({ _id: req.params.id }).update({ fName: req.body.fName, lName: req.body.lName });
res.redirect('player');
});
這裏是editPlayer.jade其中包含我使用更新播放形式:
extends layout
block content
block content
h1 #{fName} #{lName}
form(method="post" action="/#{_id}")
input(type="hidden" value=_id name="id")
label(for="fName") First Name:
input(type="text", name="fName", value=fName)
label(for="lName") Last Name:
input(type="text", name="lName", value=lName)
input(type="submit", value="Save")
如果有更多的信息會有幫助,請告訴我。提前感謝您的時間, -fred k
嘿感謝你這麼多的幫幫我。我討厭說,但你提供的代碼運行沒有錯誤,但類似於我已經有的只是添加一個新的球員,而不是實際編輯所選的一個。 – tilted 2015-03-25 03:29:38
在這一點上,我想我會添加一個console.log(),裏面會記錄傳入的_id是什麼。它可能讓你感到驚訝。請注意,你有這樣的代碼[輸入(type =「hidden」value = _id name =「id」)],我認爲我沒有這樣做。我通常做類似於將變量傳遞給Jade [res.render('player',{playerId:_id});]然後[input(type =「hidden」value =「#{playerId}」name =「id」 )] – 2015-03-27 02:29:28
老兄你真棒。我現在正在研究解決方案,但控制檯日誌告訴我該應用程序目前沒有使用正確的post方法。相反,這個帖子是我用來創建新玩家的帖子。新的播放器({fName:req.body.fName,lName:req.body.lName()){router.post('/',function(req,res){console.log(req.body.id); ) }) .save(function(err,player){ res.redirect('player'); }); });' – tilted 2015-03-28 17:26:26