为了账号安全,请及时绑定邮箱和手机立即绑定

求救啊,不然无法继续下去了,谁能帮我解决一下,实在没招了,感激不尽的说!var id=req.body.movie._id;

var express = require('express');

var path=require('path');

var _ = require('underscore');

var bodyParser = require('body-parser');

var port = process.env.PORT || 3000;

var app = express();

var mongoose=require( 'mongoose');

var Movie=require('./models/movie')

var bson = require('bson');


mongoose.connect('mongodb://localhost/node');


app.set('views','./views/pages')

app.engine('html', require('ejs').renderFile);

app.set('view engine', 'ejs');


app.use(bodyParser.urlencoded({ extended: true }))


app.use(express.static(path.join(__dirname,'bower_components')));


app.locals.moment = require('moment');

app.listen(port)

console.log('node started on port' + port)


//index page

app.get('/',function(req,res){

Movie.fetch(function(err,movies){

if(err){

console.log(err)

}

res.render('index.html',{

title:'imooc 首页',

movies:movies

})

})

})


//detail page

app.get('/movie/:id',function(req,res){

var id=req.params.id


Movie.findById(id,function(err,movie){

res.render('detail.html',{

title:'imooc'+movie.title,

movie:movie

})

})

})


//admin page

app.get('/admin/movie',function(req,res){

res.render('admin.html',{

title:'imooc 后台录入页',

movie:{

title:' ',

doctor:' ',

country:' ',

year:' ',

poster:' ',

flash:' ',

summary:' ',

language:' ',

}

})

})


//admin update movie

app.get('/admin/update/:id',function(req,res){

var id=req.params.id

if(id){

Movie.findById(id,function(err,movie){

res.render('admin.html',{

title:'imooc 后台更新页',

movie:movie

})

})

}

})


//admin post movie

app.post('/admin/movie/new',function(res,req){

var id=req.body.movie._id;  //报错TypeError: Cannot read property 'movie' of undefined

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)

})

}

})


//list page

app.get('/admin/list',function(req,res){

Movie.fetch(function(err,movies){

if(err){

console.log(err)

}

res.render('list.html',{

title:'imooc 列表页',

movies:movies

})

})

})


正在回答

5 回答

我的是Cannot read property '_id' of undefined,求告知,两天了,找不到解决办法

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

我的是Cannot read property '_Id' of undefined,求告知,两天了,找不到解决办法

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

在标签embed 里自动回发起一个视频请求,movie.flash这个字段的值,如果是非url字符串,流浪器默认会转为

http://localhsot:3000/movie/flashpath

以上路径刚好符合本页面路由("/movie/:id"),你的页面再次获取到一个新的id=flashpath,芒果里面肯定是没有这条记录。so,cmd报错,website也挂了。


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

qq_芹菜_0

这个是正解,我的就是获取不到movie的_id,我打印ID就是图片的地址
2017-04-09 回复 有任何疑惑可以回复我~

//报错TypeError: Cannot read property 'movie' of undefined

很明显movie对象未定义,此处应该是吧前端post的数据填充到movie对象,也就是你定义的model

你在开始定义的是var Movie=require('./models/movie')

把var id=req.body.movie._id;   和var movieObj=req.body.movie;中的movie改成Movie即可

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

该去买菜了

试了,没用
2015-05-21 回复 有任何疑惑可以回复我~
#2

sl_feifei 回复 该去买菜了

随着express升级,bodyParser从express中被分离了出来,因此,在使用express新版本的时候,需要npm install body-parser 来安装bodyParser。需要在app.js中use bodyParserapp.use(require('body-parser').urlencoded({extended: true}));【转自http://my.oschina.net/u/1771420/blog/336071】 应该是这个问题,之前的回答是错误的
2015-05-21 回复 有任何疑惑可以回复我~
#3

katherinesun 回复 sl_feifei

我的代码有升级到express 4.0, 可是还是出现同样的问题怎么办
2015-11-03 回复 有任何疑惑可以回复我~
#4

weibo_棉花糖sisu_0

app.use(bodyParser.urlencoded({ extended: true})); 这里的extended一定要设置为true,否则 movie[_id]是不能正常解析为json对象的
2017-07-22 回复 有任何疑惑可以回复我~
查看1条回复

遇到了同样的问题 不知道你的问题解决了么 求赐教

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

举报

0/150
提交
取消
node+mongodb 建站攻略(一期)
  • 参与学习       91860    人
  • 解答问题       889    个

带你完整实现一个从前端到后端的项目,初中级前端开发工程师必学课程

进入课程

求救啊,不然无法继续下去了,谁能帮我解决一下,实在没招了,感激不尽的说!var id=req.body.movie._id;

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信