如何 return 猫鼬查询方法中的错误?

How to return an error in a mongoose query method?

我刚刚开始使用 mongoose 查询方法,它们真的很酷。我做了一个查询方法来了解对象的所有权。如果是,它是他自己的,那么对象的值将被显示,否则它应该做一个错误,比如返回一些错误而不是其他东西。

someSchema.query.isOwner = function(user) {
    if (user.admin)
        return this;
    /* I know this will not work please suggesta solution for this too */
    else if (user._id === iShouldbeAbleToAccessTheObjectHere._id)
        return this;
    else
        // Put this into the error of exec
        return new Error('Permission denied!');
};

// This is how I'll use it
SomeModel
    .findById(someId)
    .isOwner(currentUser)
    .exec((err, result) => {
      if (err)
        res.json({ error : err });
      res.json({ data : result });
    });
//model.js
var ObjectId = require('mongoose').Types.ObjectId; 
var someModel = new mongoose.model('somemodel',someSchema);

someModel.findByIdAndCheckOwnership = function(id, callback){

    this.find({ _id :  new ObjectId(id), admin : true}, function(err, user){
        if(err){
            callback('Your Custom Error Msg', null);
        }
        else{
            callback(null, user);
        }
    });
}

//use of model in some other.js
SomeModel.findByIdAndCheckOwnership(id, function(err, user){

    if(err){
        res.json({ error :err });
    }
    else{
        res.json({ user : user });
    }
});

//populate
someModel.findByIdAndCheckOwnership = function(id, callback){

    this.find({ _id :  new ObjectId(id), admin : true}).populate('your_population_fields').exec(function(err, user){
        if(err){
            callback('Your Custom Error Msg', null);
        }
        else{
            callback(null, user);
        }
    });
}