Сообщение об ошибке в nodejs: сервер вернул код 400, тело было пустым - PullRequest
0 голосов
/ 30 сентября 2018

Я занимаюсь разработкой веб-приложения, используя MEAN Stack с Angular 6. Я борюсь со следующей ошибкой в ​​течение нескольких дней.У меня есть поле ввода, которое показывает палитру цветов.Это позволяет нам выбрать цвет.Это моя цветовая схема.

var mongoose = require('mongoose');

var rdaColorSchema = new mongoose.Schema({  
  colorMovementBox: {
      type : String,
  },
});
module.exports = mongoose.model('rdaColor', rdaColorSchema);

Это мой бэкэнд.

router.post('/save', (req, res)=>{
    var rdaColorVal = new rdaColor(
        {
            colorMovementBox: req.body.colorMovementBox,
        }
    );

rdaColorVal.save((err,doc)=> {
    if(!err){

        res.send(doc);}
        else{
            console.log(err);
        }
        });
});

Это мой служебный файл.

export class RdaColorService {

  constructor(private http: HttpClient) { }

     private handleError(error: HttpErrorResponse) {
        if (error.error instanceof ErrorEvent) {
            // A client-side or network error occurred. Handle it accordingly.
            console.error('An error occurred:', error.error.message);
        } else {
            // The backend returned an unsuccessful response code.
            // The response body may contain clues as to what went wrong,
            console.error(
                `Backend returned code ${error.status}, ` +
                `body was: ${error.error}`);
        }
        // return an observable with a user-facing error message
        return throwError('Something bad happened; please try again later.');
    };
        private extractData(res: Response) {
        let body = res;
        return body || [];
    }
    saveRdaColor(rdaColor): Observable<any> {
        return this.http.post('/rdaColor/save', rdaColor, httpOptions)
            .pipe(
                catchError(this.handleError)
            );
    }

}

Когда я отлаживаю проектЯ вижу значения цвета в интерфейсе (я использовал палитру цветов ngx, чтобы выбрать цвета).Но бэкэнд дает следующие ошибки.error

Я много искал об этой ошибке.Но ничего не помогло.

1 Ответ

0 голосов
/ 30 сентября 2018

Тело запроса было null.

Вам необходимо:

Отправить тело запроса { colorMovementBox: "<value here>" } из вызова Angular 6 POST:

this.httpClient.post("/rdaColor/save", { "colorMovementBox": "<value here>" })
    .subscribe(
          data => {
              console.log("POST Request is successful ", data);
          },
          error => {
              console.log("Error:", error);
          }
    );

Включите промежуточное программное обеспечение body-parser в свой экспресс-бэкэнд через npm i -S body-parser:

const app = express();
var bodyParser = require('body-parser')
.
.
.
app.use(bodyParser.json());
...