пн goose требуется истина req.body.name {} - PullRequest
0 голосов
/ 21 января 2020

Если я установлю значение false, оно успешно создаст объект в базе данных MongoDB с одним идентификатором. Я иногда испытываю замешательство, проверьте мой профиль, если хотите. Я думаю, что это мелочь. Если вам нужна дополнительная информация, просто прокомментируйте.

приложение. js

var express = require('express');
var bodyParser = require('body-parser');
var product = require('./routes/product'); // Imports routes for the products
var app = express();
var mongoose = require('mongoose'); // Set up mongoose connection

var dev_db_url = 'mongodb://localhost/Product';
var mongoDB = process.env.MONGODB_URI || dev_db_url;
mongoose.connect(mongoDB, {useNewUrlParser: true, useUnifiedTopology: true});
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use('/products', product);


var port = 3002;

app.listen(port, () => {
    console.log('Server is up on port numbner ' + port);
});

модель. js

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

var ProductSchema = new Schema({
    name: {type: String, required: true, max: 100},
    price: {type: Number, required: true},
});

module.exports = mongoose.model('Product', ProductSchema);

контроллер. js

var Product = require('../models/product');

//Simple version, without validation or sanitation
exports.test = function (req, res) {
    res.send('Greetings from the Test controller!');
};

exports.product_create = function (req, res, next) {
    var product = new Product(
        {
            name: req.body.name,
            bags: req.body.bags
        }
    );
    console.log(JSON.stringify(req.body))
    product.save(function (err) {
        if (err) {
            return next(err);
        }
        res.send('Bags Created successfully')
    })
};

маршрутизатор. js

var express = require('express');
var router = express.Router();

// Require the controllers WHICH WE DID NOT CREATE YET!!
var product_controller = require('../controllers/product');

// a simple test url to check that all of our files are communicating correctly.
router.get('/test', product_controller.test);


router.post('/create', product_controller.product_create);

module.exports = router;

HTTP POST: http://localhost: 3002 / products / create? Name = Jorge & price = 20

ValidationError: Ошибка проверки продукта : name: Путь name обязателен

Вы можете помочь? Спасибо!

1 Ответ

1 голос
/ 21 января 2020

? Причина, по которой это ошибка, потому что ваш req.body.name пустой или нулевой. Почему он нулевой, пустой или неопределенный? Поскольку вы не добавляете свой data в своем теле, при отправке запроса на создание.

Вы можете видеть свою Конечную точку:

HTTP POST: http://localhost: 3002 / products / create? Name = Jorge & price = 20

Это не о req.body, это req.params. Таким образом, вы можете использовать req.params.name и req.params.price.

?️‍♂️ Итак, Если вы передаете данные с использованием параметров , ваш code будет выглядеть следующим образом:

exports.product_create = function (req, res, next) {
    var product = new Product(
        {
            name: req.params.name,
            price: req.params.price
        }
    );
    console.log(req.params);
    product.save(function (err) {
        if (err) {
            return next(err);
        }
        res.send('Bags Created successfully')
    })
};

Если вы хотите использовать req.body, тогда добавьте ваш json объект к body, если вы используете Почтальон.

?️‍♂️ Вы можете увидеть изображение ниже: Пример использования почтальона для передачи ваших данных в тело перед отправкой create запроса в бэкэнд.

enter image description here

Итак , Если вы передаете свои данные из тела , тогда ваш code будет выглядеть следующим образом:

exports.product_create = function (req, res, next) {
    var product = new Product(
        {
            name: req.body.name,
            price: req.body.price
        }
    );
    console.log(req.body);
    product.save(function (err) {
        if (err) {
            return next(err);
        }
        res.send('Bags Created successfully')
    })
};

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...