findById时mongodb不能用字符串来索引?
> db.movies.findOne({_id: ObjectId("55cd57c452102b627ee88522")}) { "_id" : ObjectId("55cd57c452102b627ee88522"), "doctor" : "和塞", "title" : "机械战警", "country" : "美国", "language" : "和塞", "poster" : "http://r3.ykimg.com/05160000530EEB63675839160D0B79D5", "summary" : "《机械战警》是由何塞·帕迪里亚执导,乔尔·金纳曼、塞缪尔·杰克逊、加里·奥德曼等主演的一部科幻电影,改编自1987年保罗·范霍文执导的同名电影。影片于2014年2月12日在美国上映,2014年2月28日在中国大陆上映。影片的故事背景与原版基本相同,故事设定在2028年的底特律,男主角亚历克斯·墨菲是一名正直的警察,被坏人安装在车上的炸弹炸成重伤,为了救他,OmniCorp公司将他改造成了生化机器人“机器战警”,代表着美国司法的未来。", "flash" : "http://player.youku.com/player.php/sid/XNjA1Njc0NTUy/v.swf", "meta" : { "updateAt" : ISODate("2015-08-14T02:51:48.784Z"), "createAt" : ISODate("2015-08-14T02:51:48.784Z") }, "__v" : 0 } > db.movies.findOne({_id: "55cd57c452102b627ee88522"}) null
我改了下app.js
app.get('/movie/:id', function(req, res) { var id = req.params.id // 我不知道为什么,不能用字符串搜索而必须用ObjectId // 所以我还是用一种奇葩的方式搞定了。。。 Movie.findById(mongoose.Schema.ObjectId(id), function(err, movie){ res.render('detail', { title: 'imooc ' + movie.title, movie: movie }) }) })
希望有帮助吧