javascript - Ajax post request seems to work except data isn't saved in the database -
i'm trying ajax post request aws postgresql database on submitting form. jquery script seems correctly extracts data form, creates data object, , queries database. when connect aws instance via psql
, run select * "users";
, table empty. confusingly, have other tables running same code , requests correctly post data database.
the html/jade (adduser.jade)
extends layout block content #page-wrapper .container h2 add user br form(id='adduserform') .form-group label(for='givenname') first name input(type='text', class='form-control', id='givenname') .form-group label(for='surname') last name input(type='text', class='form-control', id='surname') .form-group label(for='phonenumber') phone number input(type='text', class='form-control', id='phonenumber') .form-group label(for='email') email input(type='email', class='form-control', id='email') .form-group label(for='address') address input(type='text', class='form-control', id='address') h5 strong notes textarea(id='notes' type='text' class='form-control', rows='5') br button(type='submit', class='btn btn-default') submit script. $(document).ready(function() { $('#adduserform').submit(function(event) { event.preventdefault(); var givenname = $('input[id="givenname"]').val(); var surname = $('input[id="surname"]').val(); var phonenumber = $('input[id="phonenumber"]').val(); var email = $('input[id="email"]').val(); var address = $('input[id="address"]').val(); var notes = $('textarea[id="notes"]').val(); $.ajax({ type: 'post', contenttype: 'application/x-www-form-urlencoded; charset=utf-8', url: '/api/users/', data: { givenname: givenname, surname: surname, phonenumber: phonenumber, email: email, address: address, notes: notes }, success: function() { console.log('posted user ' + givenname + ' ' + surname + ' db.'); } }); $('#adduserform').trigger('reset'); }); });
adduser.js
var models = require('../models'); var express = require('express'); var router = express.router(); router.get('/', function(req, res, next) { res.render('adduser', { user: req.user.givenname }); }); module.exports = router;
the post request handler (user.js)
var express = require('express'); var router = express.router(); var user = require('../models').sequelize.models.user; router.post('/', function(req, res) { return user.create({ givenname: req.body.givenname, surname: req.body.surname, phonenumber: req.body.phonenumber, email: req.body.email, ownerid: req.user.customdata._id, notes: req.body.notes }, { returning: true }) .then(function(user) { res.send(user); }) .catch(function(err) { res.send(err); });; });
app.js
var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieparser = require('cookie-parser'); var bodyparser = require('body-parser'); // include routes var mainpage = require('./routes/mainpage'); var adduser = require('./routes/adduser'); var users = require('./routes/user'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(favicon(__dirname + '/public/favicon.ico')); app.use(logger('dev')); app.use(bodyparser.json()); app.use(bodyparser.urlencoded({ extended: false })); app.use(cookieparser()); app.use(express.static(path.join(__dirname, '/public'))); // routes app.use('/', mainpage); app.use('/adduser', adduser); app.use('/api/users', users); // catch 404 , forward error handler app.use(function(req, res, next) { var err = new error('not found'); err.status = 404; next(err); }); module.exports = app;
what happens in console when submit form
executing (default): insert "users" ("id","givenname","surname","phonenumber","email","ownerid","notes","updatedat","createdat") values (default,'gandalf','grey','911','gmail@yahoo.com','6lzineznk4n0g60tw21eve','lorem ipsum dolor','2015-07-07 20:38:45.096 +00:00','2015-07-07 20:38:45.096 +00:00') returning *;
post /api/users/ 200 2945.195 ms - 1488
output psql query
dbname=> select * "users";
id | givenname | surname | phonenumber | email | ownerid | notes | createdat | updatedat ----+-----------+---------+-------------+-------+---------+-------+-----------+----------- (0 rows)
so using sequelize
node.js orm postgresql. changed name of field in user
schema user
table in database using old name when sent post
request, sequelize
couldn't recognize field. had drop table , restart app in order recreate table new name.
Comments
Post a Comment