【问题标题】:Cast to Embedded failed error in mongoose在猫鼬中投射到嵌入式失败错误
【发布时间】:2019-05-03 07:32:36
【问题描述】:

我一直在寻找通过许多来源解决我的问题,但不幸的是我找不到答案。你能帮我吗。

其中有带有架构的文件。

const mongoose = require('mongoose');
const config = require('../config/database');

const analogueNumberSchema = new mongoose.Schema({
    analogueName: String,
    analogueNum: String
});

const detailSchema = new mongoose.Schema({
    detailName: String,
    originalNumber: [String],
    analogueNumber: [analogueNumberSchema],
    note: String,
    picture: String
});

const modelModificationsSchema = new mongoose.Schema({
    modelModificationName: String,
    modelDetails: {
        engine: [detailSchema],
        transmission: [detailSchema],
        frontAxle: [detailSchema],
        rearAxle: [detailSchema],
        breakes: [detailSchema],
        electrics: [detailSchema]
    }
});

const markModelsSchema = new mongoose.Schema({
    markModelName: String,
    modelModifications: [modelModificationsSchema]
});

const carsSchema = new mongoose.Schema({
    markName: String,
    markModels: [markModelsSchema]
});

const Car = module.exports = new mongoose.model('Car', carsSchema);

module.exports.addCar = function (newCar, callback) {
    newCar.save(callback);
};

这是路由器代码:

router.post('/post', (req, res, next) => {
let newCar = new Car({
    markName: req.body.markName,
    markModels: [{
        markModelName: req.body.markModelName,
        modelModifications: [{
            modelModificationName: req.body.modelModificationName,
            modelDetails: [{
                engine: [{
                    detailName: req.body.detailName,
                    originalNumber: req.body.originalNumber.split(","),
                    analogueNumber: [{
                        analogueName: req.body.analogueName,
                        analogueNum: req.body.analogueNumber
                    }],
                    note: req.body.note,
                    picture: req.body.picture
                }],
                transmission: [{
                    detailName: req.body.detailName,
                    originalNumber: req.body.originalNumber.split(","),
                    analogueNumber: [{
                        analogueName: req.body.analogueName,
                        analogueNum: req.body.analogueNumber
                    }],
                    note: req.body.note,
                    picture: req.body.picture
                }],
                frontAxle: [{
                    detailName: req.body.detailName,
                    originalNumber: req.body.originalNumber.split(","),
                    analogueNumber: [{
                        analogueName: req.body.analogueName,
                        analogueNum: req.body.analogueNumber
                    }],
                    note: req.body.note,
                    picture: req.body.picture
                }],
                rearAxle: [{
                    detailName: req.body.detailName,
                    originalNumber: req.body.originalNumber.split(","),
                    analogueNumber: [{
                        analogueName: req.body.analogueName,
                        analogueNum: req.body.analogueNumber
                    }],
                    note: req.body.note,
                    picture: req.body.picture
                }],
                breakes: [{
                    detailName: req.body.detailName,
                    originalNumber: req.body.originalNumber.split(","),
                    analogueNumber: [{
                        analogueName: req.body.analogueName,
                        analogueNum: req.body.analogueNumber
                    }],
                    note: req.body.note,
                    picture: req.body.picture
                }],
                electrics: [{
                    detailName: req.body.detailName,
                    originalNumber: req.body.originalNumber.split(","),
                    analogueNumber: [{
                        analogueName: req.body.analogueName,
                        analogueNum: req.body.analogueNumber
                    }],
                    note: req.body.note,
                    picture: req.body.picture
                }]
            }]
        }]
    }]
});

Car.addCar(newCar, (err, car) => {
    if (err) {
        res.json({success: false, msg: 'failed to add new car'});
        console.log(err);
    } else {
        res.json({success: true, msg: 'new car added'});
    }
});
});

这里是“邮差”中post-query的代码

{
"markName": "Daewoo",
"markModels": [{
    "markModelName": "Nexia",
    "modelModifications": [{
        "modelModificationName": "1.5 8v",
        "modelDetails": [{
            "engine":[{
                "detailName": "fdkj",
                "originalNumber": ["123", "4545"],
                "analogueNumber": [{
                    "analogueName": "sdkfd",
                    "analogueNum": "csdfs"
                },
                {
                    "analogueName": "sdd",
                    "analogueNum": "csdfsasdas"
                }],
                "note": "csdsldkf;sks;dskjfsndjfns",
                "picture": ""
            }],
          "transmission": [{
                "detailName": "fdkj",
                "originalNumber": ["123", "4545"],
                "analogueNumber": [{
                    "analogueName": "sdkfd",
                    "analogueNum": "csdfs"
                },
                {
                    "analogueName": "sdd",
                    "analogueNum": "csdfsasdas"
                }],
                "note": "csdsldkf;sks;dskjfsndjfns",
                "picture": ""
            }],
          "frontAxle": [{
                "detailName": "fdkj",
                "originalNumber": ["123", "4545"],
                "analogueNumber": [{
                    "analogueName": "sdkfd",
                    "analogueNum": "csdfs"
                },
                {
                    "analogueName": "sdd",
                    "analogueNum": "csdfsasdas"
                }],
                "note": "csdsldkf;sks;dskjfsndjfns",
                "picture": ""
            }],
          "rearAxle": [{
                "detailName": "fdkj",
                "originalNumber": ["123", "4545"],
                "analogueNumber": [{
                    "analogueName": "sdkfd",
                    "analogueNum": "csdfs"
                },
                {
                    "analogueName": "sdd",
                    "analogueNum": "csdfsasdas"
                }],
                "note": "csdsldkf;sks;dskjfsndjfns",
                "picture": ""
            }],
          "breakes": [{
                "detailName": "fdkj",
                "originalNumber": ["123", "4545"],
                "analogueNumber": [{
                    "analogueName": "sdkfd",
                    "analogueNum": "csdfs"
                },
                {
                    "analogueName": "sdd",
                    "analogueNum": "csdfsasdas"
                }],
                "note": "csdsldkf;sks;dskjfsndjfns",
                "picture": ""
            }],
          "electrics": [{
                "detailName": "fdkj",
                "originalNumber": ["123", "4545"],
                "analogueNumber": [{
                    "analogueName": "sdkfd",
                    "analogueNum": "csdfs"
                },
                {
                    "analogueName": "sdd",
                    "analogueNum": "csdfsasdas"
                }],
                "note": "csdsldkf;sks;dskjfsndjfns",
                "picture": ""
            }]
        }]
    }]
}]
 }

还有错误信息:

'Cast to Embedded 值“[ { engine: [ [Object] ],\n
变速箱:[ [Object] ],\n 前轴:[ [Object] ],\n
后轴:[ [Object] ],\n 刹车:[ [Object] ],\n 电气:[ [对象] ] } ]" 在路径 "modelDetails"', 名称:'CastError', stringValue: '"[ { engine: [ [Object] ],\n 传输: [ [Object] ],\n 前轴: [ [Object] ],\n 后轴: [ [Object] ],\n 断点: [ [Object] ],\n 电气: [ [Object] ] } ]"', 种类:'嵌入式', 值:[数组], 路径:'modelDetails', 原因:[对象] } },_message:'汽车验证失败',名称:'ValidationError' }

非常感谢您的帮助。谢谢!

【问题讨论】:

    标签: node.js mongoose schema


    【解决方案1】:

    我的问题终于有了答案。 roter 代码有错误。您只需要定义属性而不定义结构。这是代码

    router.post('/post', (req, res, next) => {
    let newCar = new Car({
        markName: req.body.markName,
        markModels: req.body.markModels,
        modelModificationName: req.body.modelModificationName,
        modelDetails: req.body.modelDetails,
        engine: req.body.engine,
        transmission: req.body.transmission,
        frontAxle: req.body.frontAxle,
        rearAxle: req.body.rearAxle,
        breakes: req.body.breakes,
        electrics: req.body.electrics,
        detailName: req.body.detailName,
        originalNumber: req.body.originalNumber,
        analogueNumber: req.body.analogueNumber,
        note: req.body.note,
        picture: req.body.picture,
        analogueName: req.body.analogueName,
        analogueNum: req.body.analogueNum
    });
    
    Car.addCar(newCar, (err, car) => {
        if (err) {
            res.json({ success: false, msg: 'failed to add new car' });
            console.log(err);
    
        } else {
            res.json({ success: true, msg: 'new car added' });
        }
    });
    

    }); 如果有人感兴趣,谢谢。文字错误见谅))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 2013-12-16
      • 2012-10-16
      • 1970-01-01
      相关资源
      最近更新 更多