swf做网站头,设计类专业有哪些,营销型网站建设成为企业发展新趋势,ui培训公司一、 在mysql中创建一个表 或者随便找一个现有的表
已经有了一张叫做xw_posts的表。表里的字段非常简单#xff0c;大家可以自己建一下
CREATE TABLE xw_posts (id int unsigned NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_…一、 在mysql中创建一个表 或者随便找一个现有的表
已经有了一张叫做xw_posts的表。表里的字段非常简单大家可以自己建一下
CREATE TABLE xw_posts (id int unsigned NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,category_id int DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci;INSERT INTO xw_posts (id, name, category_id)
VALUES(1,天生我材必有用,1),(2,一天能吃三斤肉,2); 这张表的命名显然是不符合Sequelize规范的。 里面关联分类表的字段是下划线命名也不符合命名规范。 而且里面还缺少createdAt和updatedAt时间字段。 二、项目中使用创建一个迁移模型生成模板生成模型的时候同时也会生成迁移文件。但是我们现在已经有数据表了不需要再去建表了所以将迁移文件直接删掉
sequelize model:generate --name Post --attributes category_id:integer,name:string
三、更改模板
1、模型的名字我们叫做Post。这明显和数据表对不上但是没关系不要紧。增加tableName指定好模型对应的表名即可。
Post.init({category_id: DataTypes.INTEGER,name: DataTypes.STRING
}, {sequelize,modelName: Post,tableName: xw_posts, // 指定表名
});
2、另外我们这张表没有时间字段不需要createdAt和updatedAt继续增加配置
Post.init({category_id: DataTypes.INTEGER,name: DataTypes.STRING
}, {sequelize,modelName: Post,tableName: xw_posts, // 指定表名timestamps: false // 不需要时间
});
3、设置关联外键
我们的Post模型它与是属于分类的。但是关联字段叫做category_id(默认关联字段为post_id)明显也不符合默认关联字段的命名。没有关系定义一个一对多关联只需要用foreignKey定义一下关联的字段叫什么名字就可以了。
static associate(models) {// define association heremodels.Post.belongsTo(models.Category, { foreignKey: category_id, as: category });
}
四、验证
到这里为止模型就全部改造完成了。我们添加个路由测试下新建routes/posts.js