экспресс-маршрутизатор, req.body undefined - PullRequest
0 голосов
/ 07 января 2019

У меня есть почтовый интерфейс, который не передает данные правильно. тестовые шоу: req.body undefined

const express = require('express');
const router = express.Router();
const passport = require("passport");
const passportInfo = passport.authenticate('jwt',{ session: false });
const HomeSchema = require('../../../models/AnvizHome');
const homeBannerValidator = require('../../../validation/anviz/homeBanner');

router.post("/banner",passportInfo,(req,res) => {

const {msg,isValid} = homeBannerValidator(req.body);
if(!isValid){
    return res.status(400).json(msg);
}

HomeSchema.findOne({handle:req.body.handle}).then(banner => {
  console.log('current:   ' + req.body);
    const newBanner = {
        bannerBg:req.body.bannerBg,
        bannerName:req.body.bannerName,
        bannerSubName:req.body.bannerSubName,
        bannerFeather:req.body.bannerFeather,
        bannerLink:req.body.bannerLink
  };
  banner.prodcutBanner = newBanner;
  banner.then(home => res.json(home));
})
.catch((err) => res.json(err));
});

module.exports = router;

тест почтальона: enter image description here

Фактически терминал может видеть возвращенные данные.

[Object: null prototype] {
   bannerBg: '5555555555555555555555555555555555',
   bannerName: 'THE GLOBAL LEADING',
   bannerSubName: 'PROVIDER OF INTELLIGENT SECURITY',
   bannerLink: 'www.anviz.com',
   handle: 'true' }

Ищу одного или двух! Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Мне кажется, я знаю причину, потому что это основано на маркере пользователя для отправки данных, поэтому в сообщении должен быть указан идентификатор пользователя, чтобы определить, успешны ли данные?

Вот код, который был успешно сохранен, но я не знаю, правильно и неправильно:

router.post("/banner",passportInfo,(req,res) => {

const {msg,isValid} = homeBannerValidator(req.body);
if(!isValid){
    return res.status(400).json(msg);
}

const profileFields = {};
profileFields.prodcutBanner = {};
if(req.body.handle) profileFields.handle = req.body.handle;
if(req.body.bannerBg) profileFields.prodcutBanner.bannerBg = req.body.bannerBg;
if(req.body.bannerName) profileFields.prodcutBanner.bannerName = req.body.bannerName;
if(req.body.bannerSubName) profileFields.prodcutBanner.bannerSubName = req.body.bannerSubName;
if(req.body.bannerFeather) profileFields.prodcutBanner.bannerFeather = req.body.bannerFeather;
if(req.body.bannerLink) profileFields.prodcutBanner.bannerLink = req.body.bannerLink;


HomeSchema.findOne({user: req.user.id}).then(profile => {
  if(profile){
    HomeSchema.findByIdAndUpdate({user: req.user.id},{$set:profileFields},{new:true}).then(profile => res.json(profile));
  }else{
    HomeSchema.findOne({handle:profileFields.handle}).then(profile => {
        if(profile){
            msg.handle = "The user's handle personal information already exists, please do not re-create it!";
            res.status(400).json(msg);
        }
        new HomeSchema(profileFields).save().then(profile => res.json(profile));
    })
  }
})
.catch((err) => res.json(err));});


module.exports = router;
0 голосов
/ 07 января 2019

вы забыли импортировать и использовать парсер тела https://www.npmjs.com/package/body-parser

var bodyParser = require('body-parser');
var express = require('express');
express.use(bodyParser.json());
express.use(bodyParser.urlencoded({ extended: false }));
...