3
votes

Erreur de validation Mongoose: configuration de schéma non valide

Essayer de modéliser une relation entre les collections en incorporant des documents mais lors de la validation dans le schéma et de la définition de "required" sur True, voici l'erreur

une fois que j'ai commenté l'objet requis dans le genre dans le schéma des films, le problème est résolu mais je veux la validation

const Movie = mongoose.model(
  'Movies',
  new mongoose.Schema({
    title: {
      type: String,
      required: true,
      trim: true,
      minlength: 1,
      maxlength: 255
    },
    numberInStock: {
      type: Number,
      required: true,
      min: 0,
      max: 255
    },
    dailyRentalRate: {
      type: Number,
      required: true,
      min: 0,
      max: 255
    },
    genre: genreSchema
    required: true
  })
);

const genreSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 50
  }
});

TypeError: configuration de schéma non valide: True n'est pas un type valide au chemin required


1 commentaires

required: true ressemble à un champ, mais c'est la raison pour laquelle vous obtenez une erreur de configuration de schéma non valide.


5 Réponses :


1
votes

Essayez de donner le message à côté de vrai. Par exemple -> obligatoire: [true, "Title required"]


0 commentaires

3
votes

vous pouvez utiliser des références et utiliser populate lors de la récupération

genre: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'genreSchema',
        required: true
    }],

Référence: Modèle référencé un à plusieurs Relation entre les documents pour une meilleure conception de schéma


2 commentaires

@Omid Ensuite, vous devez écrire une logique pour la valider. Je ne pense pas que vous puissiez créer un document intégré tel que requis. Si vous allez avec des références, c'est possible


Je ne pense pas que ça marche, mais essayez le genre: { genreSchema: genreSchema, required: true }



1
votes

Veuillez partager le code complet.

Peut-être que la raison principale est que tu n'es pas utilisé

const Movie = mongoose.model(
  'Movies',
  new mongoose.Schema({
    title: {
      type: String,
      required: true,
      trim: true,
      minlength: 1,
      maxlength: 255
    },
    numberInStock: {
      type: Number,
      required: true,
      min: 0,
      max: 255
    },
    dailyRentalRate: {
      type: Number,
      required: true,
      min: 0,
      max: 255
    },
    genre: {
        ref: 'SchemaName',
        required: true
    },
  })
);

Vous pouvez faire ça comme ça.


0 commentaires

0
votes

Exportez le modèle de genre en tant que exports.genreSchema = genreSchema

Ensuite, dans le fichier movies.js , importez le modèle comme import { genreSchema } from './genre.model'

Essayez de faire cela, l'erreur ne viendra pas.


0 commentaires

0
votes

Supprimer required: true et suivez ceci dans la documentation officielle. Notez la version de mangouste utilisée. J'ai eu la même erreur et je l'ai résolue. Mon erreur a été de faire du sous-document un modèle au lieu de le conserver comme schéma

const childSchema = new Schema({ name: 'string' });

const parentSchema = new Schema({
  // Array of subdocuments
  children: [childSchema],
  // Single nested subdocuments. Caveat: single nested subdocs only work
  // in mongoose >= 4.2.0
  child: childSchema
});


0 commentaires