【发布时间】:2015-11-12 05:51:31
【问题描述】:
我是 node.js 的新手,正在使用 Express 和 Sequelize 构建一个 restful api。现在我只需要通过以下代码创建一个用户:
router.post('/preregister', function(req, res, next) {
models.users.create(req.body, function(err, user) {
console.log('req: ' + req.body);
if (err) res.json(err);
res.json(user);
});
});
系统输出sql语句,我可以看到数据是通过查询数据库创建的,但是服务器挂在那里,不再做任何事情,甚至没有打印出'req'行就在if之前语句,看起来好像 function(err, user) 部分从未被触及。看起来一些基本的东西是错误的。但是缺少什么??
编辑
用户模型定义如下:
"use restrict";
module.exports = function(sequelize, Sequelize) {
var users = sequelize.define('users', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false,
isUnique: true,
field: 'id'
},
email: {
type: Sequelize.STRING,
isUnique: true,
allowNull: false,
validate: {
isEmail: true
},
field: 'email'
}
}, {
freezeTableName: true
});
return users;
};
【问题讨论】:
-
请在 if 语句之前尝试 console.log(err)。而且我认为问题在于,如果出现错误,您不会发回响应。您仅在成功的情况下发送响应,而不是在错误的情况下发送响应。所以首先,尝试 console.log(err),如果它打印意味着你的回调被调用。然后再做 res.json(err) 以防出错,那么你的服务器就不会挂起
-
@Abie 不幸的是 res.json(err) 没有输出任何东西 - 看起来回调没有被调用..