我是node.js的新手,并且正在使用Express和Sequelize构建一个宁静的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语句,我可以看到数据是通过查询数据库创建的,但是随后服务器挂在那里并且不再执行任何操作,甚至没有在if语句之前打印出“ req”行,看起来函数(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;
};
Sequelize使用bluebird promises库(的修改版本),这意味着它应该起作用:
router.post('/preregister', function(req, res) {
models.users.create(req.body).then(function(user) {
res.json(user);
}).catch(function(err) {
console.error(err);
res.sendStatus(500);
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句