データベースに書き込もうとすると、自分のスキーマ(enums、minなどの形式のフィールドの制約が適用されない)に問題があります。 recipes.js:スキーマの検証、受け入れられない制約
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var schema = new Schema({
name: {type:String, required:true},
category_name: [{ type: String, enum: [ "breakfast", "lunch","dinner"], required:true }],
difficulty_level: { type: String, enum: [ 'easy', 'medium', 'hard'], required:true },
time_of_prep: { type: String, enum: [ '<=30 min', '1h-2h', 'more than 2h'], required:true },
no_of_servings: { type: Number, min:1 , required:true},
ingredients_specified: [{
ingredient: {type: String, required:true },
amount: {type: String, required:true}
}],
description: {type:String, required:true},
guide: {type:String, required:true}
});
module.exports = mongoose.model('Recipe',schema);
recipesSeeder.js:
var Recipe = require('../models/recipes');
var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
mongoose.connect('pathtodb');
var conn = mongoose.connection;
var recipes=[
new Recipe({
name: 'TestName1',
category_name: 'lunch',
difficulty_level: 'easy',
time_of_prep: '<=30min',
no_of_servings: 5,
ingredient_specified: {
ingredient:'banana',
amount:'2 pieces'
},
description: 'description1',
guide: 'guide1'
}),
new Recipe({
name: ' ',
category_name: 'testingerrorcat',
difficulty_level: 'testingerrordiff',
time_of_prep: 'testingerrortime',
no_of_servings: 0,
ingredient_specified: {
ingredient:'ingredient2',
amount:'amount2'
},
description: 'description2',
guide: 'guide2'
}),
new Recipe({
name: 'TestName3',
category_name: 'lunch',
difficulty_level: 'easy',
time_of_prep: '<=30min',
no_of_servings: 5,
ingredient_specified: {
ingredient:'ingredient3',
amount:'amount3'
},
description: 'description3',
guide: 'guide3'
})
];
var done = 0;
for (var i = 0; i < recipes.length; i++){
conn.collection('recipes2').save(recipes[i]);
done++;
if(done === recipes.length){
console.log('data inserted');
exit();
}
}
function exit() {
mongoose.disconnect();
}