[英]Ajax post request seems to work except data isn't saved in the database
I'm trying to do an ajax post request to an AWS postgreSQL database on submitting a form. 我正在尝试在提交表单时向AWS postgreSQL数据库发出ajax发布请求。 The jquery script seems to correctly extracts data from the form, creates a data object, and queries the database. jQuery脚本似乎可以正确地从表单中提取数据,创建数据对象并查询数据库。 But when I connect to the AWS instance via psql
and run SELECT * FROM "Users";
但是当我通过psql
连接到AWS实例并运行SELECT * FROM "Users";
, the table is empty. ,表格为空。 Confusingly, I have other tables running essentially the same code and the requests correctly post data to the database. 令人困惑的是,我还有其他一些基本运行相同代码的表,并且请求正确地将数据发布到了数据库中。
extends layout
block content
#page-wrapper
.container
h2 Add a 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 + ' to the db.');
}
});
$('#addUserForm').trigger('reset');
});
});
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;
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);
});;
});
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 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
module.exports = app;
Executing (default): INSERT INTO "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
dbname=> SELECT * FROM "Users";
id | givenName | surName | phoneNumber | email | ownerId | notes | createdAt | updatedAt ----+-----------+---------+-------------+-------+---------+-------+-----------+----------- (0 rows)
So I am using sequelize
as the Node.js ORM for postgreSQL. 所以我正在使用sequelize
作为PostgreSQL的Node.js ORM。 I changed the name of a field in the User
schema but the User
table in the database was using the old name when I sent the POST
request, so sequelize
couldn't recognize the field. 我更改了User
架构中的字段名称,但发送POST
请求时数据库中的User
表使用旧名称,因此sequelize
无法识别该字段。 I had to drop the table and restart the app in order to recreate the table with the new name. 我必须删除表并重新启动应用程序,以便使用新名称重新创建表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.