【问题标题】:My node js code has no effect on the keyword "require"我的节点 js 代码对关键字“require”没有影响
【发布时间】:2020-08-02 20:36:17
【问题描述】:

我是初学者,通过关注一些在线资源来学习 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”关键字不起作用?非常感谢!

尊敬的

【问题讨论】:

    标签: javascript node.js mongodb rest


    【解决方案1】:

    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
    });
    

    参考this

    【讨论】:

    • 非常感谢 Kartik!对不起,我愚蠢的拼写错误!
    猜你喜欢
    • 2015-11-04
    • 2018-02-10
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多