亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

我來總結一下我跟著學習時遇到的問題及解決:

1. bodyParser

? 新版本已經沒有bodyParser了,很多人留言也提到這個問題。解決的方法是npm install body-parser(注意名字和之前的不一樣哦),然后代碼中調用也要改變一下,我的如下:

var?bodyParser?=?require('body-parser')
app.use(bodyParser.urlencoded())

2. 『Cannot read property 'movie' of undefined』

? 這個問題在解決上一個問題1以后就隨之而來,也是困惑了我很長時間。試了各種Google出來的方法,都沒用。后來無意中試著改變了(req,res)的位置,居然解決了。具體如下:

? 這是跟著作者的視頻寫的原來的代碼:

app.post('/admin/movie/new',?function(res,?req){
	var?id?=?req.body.movie._id
	var?movieObj?=?req.body.movie
	var?_movie

? 我改了(req,res)的位置后:

app.post('/admin/movie/new',?function(req,?res){
	var?id?=?req.body.movie._id
	var?movieObj?=?req.body.movie
	var?_movie

?問題就解決了!暈,視頻里作者還都說『粗心害死人啊!』


現在又遇到了新的問題,不知道作者能不能看到我的留言給我解答一下。問題就是,例如我提交了一個影片『movie1』,再修改它,不改title(仍然是movie1),改了其它任意字段。點擊提交后,在列表頁看到了兩條記錄,名稱都是movie1. 而我的理解title是一樣的,為什么會變成兩條記錄。那個『if (id !== 'undefined')』是什么意思呢?


正在回答

9 回答

我的怎么識別不了name="movie[_id]"這個寫法啊,然后錄入的時候直接報

Cannot?read?property?'_id'?of?undefined

,

input(type="hidden",?name="movie[_id]",?value="#{movie._id}")


0 回復 有任何疑惑可以回復我~

建站一期參考代碼:留下github地址?http://www.xianlaiwan.cn/view/656

0 回復 有任何疑惑可以回復我~
#1

sonicXXX

地址錯了吧
2016-06-14 回復 有任何疑惑可以回復我~

找 can't read movie的錯好久了!??!

0 回復 有任何疑惑可以回復我~
#1

bububang

想問大神這個問題是怎么解決的呢
2016-07-31 回復 有任何疑惑可以回復我~

大家沒有遇到一點擊“錄入”,就報錯“cannout read property save of undefined”?

0 回復 有任何疑惑可以回復我~
#1

小小小木

我剛遇到。。。請問你是怎么解決的呀
2016-05-30 回復 有任何疑惑可以回復我~
#2

sonicXXX 回復 小小小木

解決了嗎?
2016-06-14 回復 有任何疑惑可以回復我~

解決了錄入電影出現的問題,low_00的問題我也出現了,ths

0 回復 有任何疑惑可以回復我~

關于bodyParser的設置

var?bodyParser?=?require('body-parser')
app.use(bodyParser.urlencoded({?extended:?true?}));

調用時需要傳入如上參數:extended:true,默認為false,否則在下面的創建Movie中:

app.post('/admin/movie/new',?function(res,?req){
????var?id?=?req.body.movie._id
????var?movieObj?=?req.body.movie
????var?_movie

你仍然是得不到對象和相關的屬性的。

2 回復 有任何疑惑可以回復我~

這貼子真好,頂!

0 回復 有任何疑惑可以回復我~

再次解釋下上面的回答,其中的 后面應該會被拿掉了,是指在二期課程中會被拿掉,不用這樣的方式。


一期中代碼應該是這樣:

//?admin?post?movie
app.post('/admin/movie/new',?function(req,?res)?{
??var?id?=?req.body.movie._id
??var?movieObj?=?req.body.movie
??var?_movie

??if?(id?!==?'undefined')?{
????Movie.findById(id,?function(err,?movie)?{
??????if?(err)?{
????????console.log(err)
??????}

??????_movie?=?_.extend(movie,?movieObj)
??????_movie.save(function(err,?movie)?{
????????if?(err)?{
??????????console.log(err)
????????}

????????res.redirect('/movie/'?+?movie._id)
??????})
????})
??}
??else?{
????_movie?=?new?Movie({
??????doctor:?movieObj.doctor,
??????title:?movieObj.title,
??????country:?movieObj.country,
??????language:?movieObj.language,
??????year:?movieObj.year,
??????poster:?movieObj.poster,
??????summary:?movieObj.summary,
??????flash:?movieObj.flash
????})

????_movie.save(function(err,?movie)?{
??????if?(err)?{
????????console.log(err)
??????}

??????res.redirect('/movie/'?+?movie._id)
????})
??}
})

那么這段代碼做了兩件事:


1. 新生成一個 new movie 實體

2. 更新一個已存在的 new movie 實體


至于是新生成,還是更新,則由?req.body.movie._id 是否存在來判斷,如果從后臺提交的請求中沒有 _id, 也就是?

form.form-horizontal(method="post",?action="/admin/movie/new")
????????input(type="hidden",?name="movie[_id]",?value="#{movie._id}")

views 的 admin 中,這個 隱藏域 并沒有被賦值,那么?req.body.movie._id 拿到的就是一個 undefined, 通過它存在與否進入到不同的處理邏輯中。

3 回復 有任何疑惑可以回復我~
#1

whuiscool 提問者

謝謝解答
2014-10-02 回復 有任何疑惑可以回復我~
#2

wsw12345

環境: win7 64bit id !== 'undefined' 不work,改成id !== null 之后可以保存第一條數據。
2015-05-12 回復 有任何疑惑可以回復我~
var?MovieSchema?=?new?Schema({
??doctor:?String,
??title:?String,
??language:?String,
??country:?String,
??summary:?String,
??flash:?String,
??poster:?String,
??year:?Number,
??pv:?{
????type:?Number,
????default:?0
??},
??category:?{
????type:?ObjectId,
????ref:?'Category'
??},
??meta:?{
????createAt:?{
??????type:?Date,
??????default:?Date.now()
????},
????updateAt:?{
??????type:?Date,
??????default:?Date.now()
????}
??}
})

Title 并不是 unique 的,所以,在后臺編輯頁面多次提交會形成多條數據,而每條數據的 _id 是 unique 的,因此后臺還有一個 edit 功能是針對每一條數據進行更新,這個更新不會重復生成數據。


if (id !== 'undefined') 在后面應該會被拿掉了,這里是判斷這條數據是否還存在。


最后,由于自己的粗心,給大家帶來的不便,向大家致歉。

5 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
node+mongodb 建站攻略(一期)
  • 參與學習       91828    人
  • 解答問題       921    個

帶你完整實現一個從前端到后端的項目,初中級前端開發工程師必學課程

進入課程
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號