Search code examples
javascriptnode.jspolymer

POST 400 (Bad request) polymer app


I want to send data to database. I use polymer + nodeJS. i tried a lot of configuration but i always have an error: POST 400 (Bad Request)

I use 3 files application-header.html, index.js and sqlRequest.js.

application-header.html : Here is my front-end html file

<iron-ajax 
    method="POST"
    id="getNotif"
    on-response="notificationAjax"
    content-type="application/json"
    handle-as="json">
</iron-ajax>

<div class="notification" on-click="notificationMenu">
    <span class="notificationSpan" id="notificationNumber"></span>
    <span class="disNone notificationMenuCss" id="notifBar"></span>
</div>

<script>
    Polymer({
        notificationMenu: function() {  
document.querySelector(".notificationMenuCss").classList.toggle("disNone");
            var notifNumber = 
document.getElementById('notificationNumber').innerHTML;
            notifNumber = this.DataObj;
            this.$.getNotif.url = "/getNotifBack";
            this.$.getNotif.generateRequest();
        },

        notificationAjax: function(e) {
            this.$.getNotif.url = "/getNotifBack";
            this.$.getNotif.generateRequest();
        }
    });

index.js : Here is one of my JS back-end file

var express = require('express');
var app = require('express')();
var http = require('http').Server(app);
var router = express.Router();
var logger = require('./winstonConf.js');

router.post('/getNotifBack', function (req, res, next) {
    var essai = require('./sqlRequest.js');
    essai.notification(req.body, function (index) {
        res.send(JSON.stringify(index));
    });
});

sqlRequest.js : Here is another of my JS back-end file

exports.notification = function (cb) {
    var mysql = require('mysql');
    var connection = mysql.createConnection({
        host: 'localhost',
        user: 'user',
        password: 'password',
        database: 'database'
    });

    var sqltable = "INSERT INTO notification VALUES (NULL, '1') ";
    connection.connect();
        connection.query(sqltable, function (err, results, fields) {
            if (err) {
                console.log('Error while performing Query');
                connection.end();
            } else {
            console.log('success performing Remove Query');
            connection.end();
            cb("success");
        }
    });
};

Solution

  • i found the solution. It was missing a body element for iron ajax.

    <iron-ajax 
        method="POST"
        id="getNotif"
        on-response="notificationAjax"
        content-type="application/json"
        handle-as="json">
        body = [{"element":"1"}]
    </iron-ajax>