私のノードのjsコードはキーワード「必要」に影響を与えません

2020-08-02 javascript node.js mongodb rest

私はいくつかのオンラインリソースをフォローして、node.js、REST API、MongoDBを勉強しています。ユーザーが空の値を入力できないように、次のコードでキーワード「require」を使用しようとしました。

ninjas.js(スキーマとモデルの作成)

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

//create Schema and model
const NinjaSchema = new Schema({
    name:{
        type: String,
        require: [true,'Name field is required']
    },
    rank:{
        type: String,
        require: [true,'This field is required']
    },
    available:{
        type: Boolean,
        default: false,
        require: [true,'This field is required']
    }
    //add in geo loction
});

const Ninja = mongoose.model('hi ninja',NinjaSchema);

module.exports = Ninja;

以下は、APIを処理するコードです。

api.js

const express = require('express');
const Ninja = require('../models/ninjas');
const router = express.Router();

//get a list of ninjas from the database
router.get('/ninjas',(req,res,next)=>{
    res.send({type: 'GET'});
})

//add a new ninjas to the database
router.post('/ninjas',(req,res,next)=>{
    //create a Ninja object and save it to DB
    Ninja.create(req.body).then((ninja) => {
        res.send(ninja)
    }).catch(next);
})

//update a ninjas in the database
router.put('/ninjas/:id',(req,res,next)=>{
    res.send({type: 'PUT'});
})

//delete a ninjas from the database
router.delete('/ninjas/:id',(req,res,next)=>{
    res.send({type: 'DELETE'});
})

module.exports = router;

以下はメインプログラムです:

index.js

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

//set up express app
const app = express();

//connect to mondodb
mongoose.connect("mongodb://localhost/ninjago",{
    useNewUrlParser: true,
    useUnifiedTopology: true,
});
mongoose.Promise = global.Promise;

//body parser middleware
app.use(bodyParser.json());

//initialize routes
app.use('/api',require('./routes/api'));

//error handling middleware
app.use((err,req,res,next) => {
    //console.log(err);
    res.status(422).send({error: err.message});
});

//listen for requests
app.listen(process.env.port || 4000,() => {
    console.log('now listening for requests');
});

ただし、POSTMANを使用してAPIをテストしようとすると、一部のパラメーターを指定していなくても、システムは引き続き成功のメッセージを返します。 ここに画像の説明を入力してください

「require」キーワードが機能しない原因となっているコードに問題があるか、欠けているかどうかを確認できますか?どうもありがとうございます!

ほん

Answers

requireをスキーマでrequiredキーワードに置き換えます

const NinjaSchema = new Schema({
    name:{
        type: String,
        required: [true,'Name field is required']
    },
    rank:{
        type: String,
        required: [true,'This field is required']
    },
    available:{
        type: Boolean,
        default: false,
        required: [true,'This field is required']
    }
    //add in geo loction
});

これを参照してください。

Related