如何从方法访问架构字段(如何根据架构中的另一个字段设置字段的属性)?

时间:2019-09-27 16:11:47

标签: javascript node.js mongodb mongoose

我有一个描述CAR模型的猫鼬模型,看起来像这样:

const mongoose = require("mongoose");
const carsData = require('./Data/carsData');

function getCarBrandArr() {
    console.log(carsData.map(({ brand }) => brand))
    return carsData.map(({ brand }) => brand);
}


const carSchema = new mongoose.Schema({
        numOfSeats: {
            required: true,
            type: Number,
            min: 2,
            max: 20,
            validator: {
                validate: Number.isInteger,
                message: '{VALUE} is not an integer'
            }
        },
        brand: {
            required: true,
            type: String,
            enum: getCarBrandArr()
        },
        model: {
            required: true,
            type: String,
            enum:  // HERE I WANT TO RETURN ONLY THE ARRAY OF MODELS OF THE 
                   // BRAND SELECTED ABOVE
        }
});

我想在模型领域保护枚举,因此用户只能输入所选品牌的模型,而不能输入其他品牌的模型。

我的汽车品牌和型号存储在单独的carsData.js文件中,该文件如下所示:

const carsData = [

{"brand": "Seat", "models": ["Alhambra", "Altea", "Altea XL", "Arosa", "Cordoba", "Cordoba Vario", "Exeo", "Ibiza", "Ibiza ST", "Exeo ST", "Leon", "Leon ST", "Inca", "Mii", "Toledo"]},
{"brand": "Renault", "models": ["Captur", "Clio", "Clio Grandtour", "Espace", "Express", "Fluence", "Grand Espace", "Grand Modus", "Grand Scenic", "Kadjar", "Kangoo", "Kangoo Express", "Koleos", "Laguna", "Laguna Grandtour", "Latitude", "Mascott", "Mégane", "Mégane CC", "Mégane Combi", "Mégane Grandtour", "Mégane Coupé", "Mégane Scénic", "Scénic", "Talisman", "Talisman Grandtour", "Thalia", "Twingo", "Wind", "Zoé"]},
{"brand": "Peugeot", "models": ["1007", "107", "106", "108", "2008", "205", "205 Cabrio", "206", "206 CC", "206 SW", "207", "207 CC", "207 SW", "306", "307", "307 CC", "307 SW", "308", "308 CC", "308 SW", "309", "4007", "4008", "405", "406", "407", "407 SW", "5008", "508", "508 SW", "605", "806", "607", "807", "Bipper", "RCZ"]}
]

module.exports = carsData;

实现此目标的最佳方法是什么,我尝试使用.find()函数,但是当我指的是this.model时,在这种情况下this.model是未定义的!?

0 个答案:

没有答案