【发布时间】:2016-02-13 07:31:01
【问题描述】:
将以下模型文件与 Sequelize 结合使用,此代码可以正常运行并允许我执行插入操作:
var crypto = require('crypto');
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User',
{
title: DataTypes.STRING,
name: DataTypes.STRING,
email: DataTypes.STRING,
username: DataTypes.STRING,
hashedPassword: DataTypes.STRING,
provider: DataTypes.STRING,
salt: DataTypes.STRING,
facebookUserId: DataTypes.INTEGER,
twitterUserId: DataTypes.INTEGER,
twitterKey: DataTypes.STRING,
twitterSecret: DataTypes.STRING,
github: DataTypes.STRING,
openID: DataTypes.STRING
},
...
)
但是,当我尝试手动添加自己感兴趣的字段时,即添加一个邮政编码字段,如下所示:
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User',
{
title: DataTypes.STRING,
name: DataTypes.STRING,
email: DataTypes.STRING,
username: DataTypes.STRING,
hashedPassword: DataTypes.STRING,
provider: DataTypes.STRING,
salt: DataTypes.STRING,
facebookUserId: DataTypes.INTEGER,
twitterUserId: DataTypes.INTEGER,
twitterKey: DataTypes.STRING,
twitterSecret: DataTypes.STRING,
github: DataTypes.STRING,
openID: DataTypes.STRING,
ZIP: DataTypes.INT
},
以下错误传播:
SequelizeDatabaseError: ER_BAD_FIELD_ERROR: Unknown column 'title' in 'field list'
为什么我不允许在模型中添加字段以便能够从控制器访问它们?
【问题讨论】:
-
您是否正在将您的模型与数据库同步? ,确保你正在这样做,关于你的 ZIP 字段没有数据类型 INT ,有 INTEGER ,docs.sequelizejs.com/en/latest/api/datatypes/#integer
-
模型与数据库的同步发生在插入之后,对吗?另外,我将 ZIP 类型更改为 INTEGER,并且传播了完全相同的错误
-
你必须同步你的模型模式,这将改变你在数据库中的表,所以如果你可以检查你的表中是否有一个 ZIP 列,那就没问题了。
标签: node.js express database-schema sequelize.js