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

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
        })
    })
})

希望有帮助吧

正在回答

1 回答

如果出现null上调用方法的,很可能是这原因吧

✘  ~/Work/project/Imooc  node app.js
imooc started on port 3000
/home/lyy/Work/project/Imooc/app.js:90
            _movie.save(function(err, movie){
                   ^
TypeError: Cannot call method 'save' of null
    at /home/lyy/Work/project/Imooc/app.js:90:20
    at Query.<anonymous> (/home/lyy/Work/project/Imooc/node_modules/mongoose/lib/query.js:2106:28)
    at /home/lyy/Work/project/Imooc/node_modules/mongoose/node_modules/kareem/index.js:177:19
    at /home/lyy/Work/project/Imooc/node_modules/mongoose/node_modules/kareem/index.js:109:16
    at process._tickCallback (node.js:419:13)


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

举报

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

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

进入课程

findById时mongodb不能用字符串来索引?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号