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

请问添加页的id是怎么来的?

在下面,录入页面的代码, input(type='hidden', name="movie[_id]", value="#{movie._id}") 这是一个隐藏域,也就是说,我们根本不能给这个隐藏域输入值,此时,提交按钮的话,movie[_id]是无值的,但是在下面的路由中,却有这个代码:

var id = req.body.movie._id//这个movie._id是怎么来的

请问这个movie._id是怎么来的?



这是录入页面的代码:

```

extends ../layout

block content
  .container
     .row
        form.form-horizontal(method="post", action="/admin/movie/new")
           input(type='hidden', name="movie[_id]", value="#{movie._id}")
           //使用hidden隐藏域,用来承载数据,类似elec
           .form-group
              label.col-sm-2.control-label(for="inputTitle") Name
              .col-sm-10
                 input#inputTitle.form-control(type="text", name="movie[title]", value="#{movie.title}")
           .form-group
              label.col-sm-2.control-label(for="inputDirector") Director
              .col-sm-10
                 input#inputDirector.form-control(type="text", name="movie[director]", value="#{movie.director}")
           .form-group
              label.col-sm-2.control-label(for="inputCountry") Country
              .col-sm-10
                 input#inputCountry.form-control(type="text", name="movie[country]", value="#{movie.country}")
           .form-group
              label.col-sm-2.control-label(for="inputLang") Lang
              .col-sm-10
                 input#inputLang.form-control(type="text", name="movie[lang]", value="#{movie.lang}")
           .form-group
              label.col-sm-2.control-label(for="inputPoster") Poster
              .col-sm-10
                 input#inputPoster.form-control(type="text", name="movie[poster]", value="#{movie.poster}")
           .form-group
              label.col-sm-2.control-label(for="inputFlash") Flash
              .col-sm-10
                 input#inputFlash.form-control(type="text", name="movie[flash]", value="#{movie.flash}")
           .form-group
              label.col-sm-2.control-label(for="inputYear") Year
              .col-sm-10
                 input#inputYear.form-control(type="text", name="movie[year]", value="#{movie.year}")
           .form-group
              label.col-sm-2.control-label(for="inputSummary") Summary
              .col-sm-10
                 input#inputSummary.form-control(type="text", name="movie[summary]", value="#{movie.summary}")
           .form-group
              .col-sm-offset-2.col-sm-10
              button.btn.btn-default(type="submit") Submit

```


```

//录入页面的提交请求路由

app.post('/admin/movie/new', function(req,res){
   
  var id = req.body.movie._id//这个movie._id是怎么来的
   console.log("我是monie/new:" + JSON.stringify(req.body));

  //todo 疑问req.body.movie这里的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)
           }


           // 重定向,就是说,当点击提交时,页面由'/admin/movie/new'重定向为'/movie/' + movie._id
           res.redirect('/movie/' + movie._id)
        })
     })
     // res.json({success: "提交存储开始,我是更新数据,即将进行重定向"})
  } else {//如果是新加的数据
     // res.json({success: "提交存储开始,我是新加数据"})
     _movie = new Movie({
        director: movieObj.director,
        title: movieObj.title,
        country: movieObj.country,
        lang: movieObj.lang,
        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 回答

同问,一直提示_id  undefined

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

ybdt1201 提问者

后面才知道,movie的数据存储到mongoose中时,mongodb会自动为movie生成一个_id,作为这个数据的标识
2016-10-19 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

请问添加页的id是怎么来的?

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