【问题标题】:Nested type Schema MongoDB for languages用于语言的嵌套类型 Schema MongoDB
【发布时间】:2020-12-14 13:07:49
【问题描述】:

我正在创建一个 MongoDB 数据库,其中模型的一些信息将取决于指示语言的配置文件。因此,我将架构用作 LanguageSchema 的一种类型(在底部)并在类型声明中使用,但在运行它时出现类型未定义的错误。

const Schema = mongoose.Schema;
import {LanguagesSchema } from '../config/menutApi.config';

const sectionSchema = new Schema({
    title: { type: LanguagesSchema},
    content: { type: LanguagesSchema},
    image: { type: Schema.Types.String, default: 'image.jpg' },
    gallery: {type: Schema.Types.ObjectId, ref:'Gallery'}
}, { versionKey: false, _id: false });

const ArticleSchema = new mongoose.Schema({
  name: { type: LanguagesSchema },
  tags: { type: [ LanguagesSchema], index: true }, // field level,
  slug: { type: LanguagesSchema, required:true},
  sections: {type: [sectionSchema]}
},{ timestamps: true });


module.exports.getArticleById = function (id: any , callback: any) {
  article_model.findById(id, callback)
}
//Creating our model
export const article_model = mongoose.model("Article", ArticleSchema);

作为 LanguageSchema 这个:

const Schema = mongoose.Schema;
export const LanguagesSchema = new Schema({
        esp: { type: Schema.Types.String}, 
        cat: { type: Schema.Types.String}, 
        eng: { type: Schema.Types.String}
    } , { versionKey: false, _id: false });

运行时出现以下错误:

throw new TypeError('Invalid value for schema path `' + fullPath +
            ^
TypeError: Invalid value for schema path `title.type`, got value "undefined"
    at Schema.add (/Users/daviniaroca/Documents/programacion/freelance/menutServer/menut_server/node_modules/mongoose/lib/schema.js:473:13)
    at Schema.add (/Users/daviniaroca/Documents/programacion/freelance/menutServer/menut_server/node_modules/mongoose/lib/schema.js:507:12)
    at new Schema (/Users/daviniaroca/Documents/programacion/freelance/menutServer/menut_server/node_modules/mongoose/lib/schema.js:130:10)
    at Object.<anonymous> (/Users/daviniaroca/Documents/programacion/freelance/menutServer/menut_server/src/models/article.model.ts:5:23)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Module.m._compile (/Users/daviniaroca/Documents/programacion/freelance/menutServer/menut_server/node_modules/ts-node/src/index.ts:858:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Object.require.extensions.(anonymous function) [as .ts] (/Users/daviniaroca/Documents/programacion/freelance/menutServer/menut_server/node_modules/ts-node/src/index.ts:861:12)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/Users/daviniaroca/Documents/programacion/freelance/menutServer/menut_server/src/services/article.service.ts:1:1)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Module.m._compile (/Users/daviniaroca/Documents/programacion/freelance/menutServer/menut_server/node_modules/ts-node/src/index.ts:858:23)

【问题讨论】:

    标签: node.js mongodb mongoose-schema


    【解决方案1】:

    您的文章模型标题字段类型不能是您的自定义类型。如果您希望模型架构的字段是自定义架构,则必须

    const sectionSchema = new Schema({
        title: LanguagesSchema,
    });
    

    您可以在此答案https://stackoverflow.com/a/39295760/6329540中找到更多信息

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 2019-11-15
      • 2018-03-08
      • 1970-01-01
      • 2020-08-02
      • 2020-09-15
      相关资源
      最近更新 更多