【问题标题】:Invalid schema configuration: `model` is not a valid type within the array `characters`无效的架构配置:`model` 不是数组`characters` 中的有效类型
【发布时间】:2020-03-26 15:33:12
【问题描述】:

我正在尝试创建架构子文档,但收到上面列出的错误, 有问题的模式看起来像这样 架构案例问题

const mongoose = require('mongoose');
const Schema = mongoose.Schema

const CharacterSchema = new Schema();
CharacterSchema.add({
    name: {
        type: String,
        required: true
    },
    title: {
        type: String
    },
    charcterClass: { // will be limited in form creation
        type: String
    },
    level: {
        type: Number
    }
});

const Charcter = mongoose.model('User', CharacterSchema);
module.exports = Charcter;

上面的架构调用架构

const mongoose = require ('mongoose');
const Schema = mongoose.Schema;
const {CharacterSchema} = require(__dirname +'/CharacterModel.js');

const UserSchema = new Schema()
UserSchema.add({
    name: {
        type: String, 
        required: true
    } ,
    characters: [CharacterSchema]
});

const User = mongoose.model('Character', UserSchema);
module.exports = User;

【问题讨论】:

  • 将架构导出为架构。不是猫鼬模型。 module.exports = CharacterSchema;

标签: node.js mongodb mongoose


【解决方案1】:

尝试像这样进行导入 const {CharacterSchema} = require(__dirname +'/CharacterModel.js').schema;

在末尾添加.schema

这篇文章与你的问题有关,你会在那里看到解释。​​

Embedding schemas is giving error

【讨论】:

    【解决方案2】:

    用户架构:

    const mongoose = require ('mongoose');
    const Schema = mongoose.Schema;
    
    const CharacterSchema = new Schema({
        name: {
            type: String,
            required: true
        },
        title: {
            type: String
        },
        charcterClass: { 
            type: String
        },
        level: {
            type: Number
        }
    });
    
    const UserSchema = new Schema({
        name: {
            type: String, 
            required: true
        } ,
        characters:{ 
            type:[CharacterSchema]
        }
    });
    
    const User = mongoose.model('User', UserSchema);
    module.exports = User;
    

    【讨论】:

    • 这真的很令人尴尬,虽然在修复模型名称时它仍然抛出错误 Invalid schema configuration: model is not a valid type within the array characters
    • 你的角色模型是用在其他地方还是只是在用户模型中?
    • 错误是从架构生成的,但是我确实在我的 app.js 中使用它,在一个看起来像这样的 post 路由中 `User.find({'name': req.params.user} ) .then(results => { const UserToPush = new User(results); console.log(UserToPush); UserToPush.characters.push(newCharacter); UserToPush.save(); res.status(201).send(newCharacter) ; }) .catch(err =>{ console.error(err); }) `
    • 很好解决了它,但是我将如何创建一个角色?如果它们在同一个文件中,则访问 characterSchema
    • 字符存储在用户架构中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2019-08-16
    • 2021-03-24
    • 2022-01-04
    • 2023-02-09
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多