【问题标题】:Cast Error after change _id number in url path更改 url 路径中的 _id 编号后出现转换错误
【发布时间】:2018-01-29 18:23:37
【问题描述】:

嘿,我有一个问题,当在数据库中找不到产品时如何显示信息?因为现在当我在 url 中更改 _id 编号时,我收到错误 Cast to ObjectId failed for value "5962088db4457a0aec3d9d4dh" at path "_id" for model "User"

api.js

router.get('/edit/:id', function(req, res) {
    var editUser = req.params.id;
    User.findOne({ username: req.decoded.username }, function(err, mainUser) {
        if(err) throw err
        if(!mainUser) {
            res.json({ success: false, message: 'User no found'});
        } else {
            if(mainUser.permission === 'admin' || mainUser.permission === 'moderator') {
                User.findOne({ _id: editUser }, function(err,user) {
                    if(err) throw err
                    if(!user) { 
                        res.json({ success: false, message: 'User no found' });
                    } else {
                        res.json({ success: true, user: user });
                    }
                })
            } else {
                res.json({ success: false, message: 'You are not an admin' });
            }
        }
    });
});

routes.js

.when('/edit/:id', {
    templateUrl: 'app/views/pages/management/edit.html',
    controller: 'editCtrl',
    controllerAs: 'edit',
    authenticated: 'true',
    permission: ['admin', 'moderator']
})
.otherwise({redirectTo : '/'})

【问题讨论】:

    标签: angularjs node.js mongodb mongoose


    【解决方案1】:

    您可以在查询数据库之前对 id 进行验证检查

    var objectId = require('mongodb').ObjectID;
    
        if(objectid.isValid(editUser)){
        //your all code here
        }
        else
        {
         res.json({ success: false, message: 'invalid id' });
        }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    相关资源
    最近更新 更多