首页 > 解决方案 > 如何在猫鼬中的 populate() 之后使用 .where().equal()?

问题描述

那是我的两个模型:

var OfferSchema = mongoose.Schema({
    title: {
        type : String
    },
    commerce: {
        type : mongoose.Schema.Types.ObjectId,
        ref : 'Commerce'
    }
});

一个 offer 包含一个 commerce :

var CommerceSchema = mongoose.Schema({
    name: {
        type: String
    }
});

然后我只想获取所有具有名为“Haircut”的商业的报价,所以我要求:

module.exports.getOffresByName = function(req,callback){
    var name= req;
    Offre.find()
        .populate('commerce')
        .where('commerce.name').equals('Haircut')
        .exec(callback);
}

我没有从中得到任何东西..(而且我知道我有一个名为“理发”的商业报价,所以问题出在我的要求上)

你能帮我吗 ?:D

标签: javascriptmongodbmongoose

解决方案


最后我成功了,我采取了另一种方式!

module.exports.getOffresByName = function(req,callback){
        var name= req;
        var result = [];
        Offre.find()
        .populate('commerce') 
        .exec(function(err, offer){
            if(err) return err;
            var cmp= 0;
            for(var i= 0; i<offer.length; i++){
                if( offer[i].commerce.name== name){
                    result[cmp]= offer[i];
                    cmp++;
                }
            }
            callback(err, result);
        });

推荐阅读