Ajax post请求似乎可以工作,只是数据没有保存在数据库中
Ajax post request seems to work except data isn't saved in the database
我试图做一个ajax post请求到一个AWS postgreSQL数据库提交表单。jquery脚本似乎可以正确地从表单中提取数据、创建数据对象并查询数据库。但是,当我通过psql
连接到AWS实例并运行SELECT * FROM "Users";
时,表为空。令人困惑的是,我有其他表运行本质上相同的代码和请求正确地将数据发送到数据库。
HTML/jade (addUser.jade)
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');
});
});
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;
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 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
psql查询的输出
dbname=> SELECT * FROM "Users";
id | givenName | surName | phoneNumber | email | ownerId | notes | createdAt | updatedAt
----+-----------+---------+-------------+-------+---------+-------+-----------+-----------
(0 rows)
所以我使用sequelize
作为postgreSQL的Node.js ORM。我在User
模式中更改了一个字段的名称,但是当我发送POST
请求时,数据库中的User
表使用的是旧名称,因此sequelize
无法识别该字段。为了用新名称重新创建表,我必须删除表并重新启动应用程序。
- 如何使用 Angular JS 将数据保存在数据库中
- 将数据保存到数据库(ajax/php)后,使文本字段变灰/禁用
- 当使用ajax并将html数据保存为对象时,收听浏览器返回按钮.好的或坏的
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 将 JSON 数据保存到服务器上
- 可以'编辑后不会将数据保存在数据库中,但网格显示更改
- Javascript-将谷歌趋势url中的数据保存到PHP数组中
- 如何使用JavaScript将用户生成的数据保存到Firebase中的用户
- 将表数据保存在本地存储中
- 我应该把维基百科的数据保存到我的数据库中吗
- 使用PHP将表格数据保存为CSV格式
- 如何在网站上实现一个按钮,允许用户将生成的数组数据保存为ASCII文件
- imacros JavaScript 将数据保存到文件中,在 Firefox 中给出错误
- 如何将数据保存到本地谷歌表格
- 将表数据保存到 HTML5 LocalStorage
- 如何将 JSON 数据保存到文件
- 将二进制数据保存在浏览器中,而不会在下载时进行 UTF8 编码
- 将输入数据保存到全局变量
- 将数据保存到Syncano Angular应用程序
- 使用角度将结构化数据保存在火库中