当前位置: 首页 > 后端技术 > Node.js

nodejs-sequelize扩展使用

时间:2023-04-03 12:59:13 Node.js

InstallSequelizenpmisequelizedriverinstallation(任选其一)npminstall--savepgpg-hstore#Postgresnpminstall--savemysql2npminstall--savemariadbnpminstall--savesqlite3npminstall--savetedious#MicrosoftSQLServer连接数据库测试第一次连接体验导入sequelize包创建sequelize实例(通过实例构造方法传入参数创建连接数据库地址)。authenticate()函数测试连接是否正常constSequelize=require('sequelize');constsequelize=newSequelize('dog','root','123456',{host:'localhost',/*选择'mysql'|'mariadb'|'postgres'|'mssql'*/dialect:'mysql'});尝试{续集。认证();console.log("ok");}catch(err){console.log(err)}构造函数参数详解https://sequelize.org/master/...默认关闭连接,在保持连接打开并为所有查询使用相同的连接。sequelize.close()modelmodel模型的本质是表示数据库中表的抽象,包括数据库表的名称和名称下的列(以及列的数据类型)modeldefinition-define方法sequelize.define(modelName,attributes,options)功能详解https://sequelize.org/master/...https://sequelize.org/master/...例如:定义一个用户模型const{Sequelize,DataTypes}=require('续集');constsequelize=newSequelize('做g','root','123456',{host:'localhost',dialect:'mysql'});constUser=sequelize.define('User',{firstname:{type:DataTypes.STRING,allowNull:false},lastname:{type:DataTypes.STRING,//allowNull默认为true}},{//其他模型参数});console.log(User===sequelize.models.User)模型定义-初始化方法const{续集,数据类型,模型}=require('sequelize');constsequelize=newSequelize('sequelize','root','123456',{host:'localhost',/*选择'mysql'|'mariadb'|'postgres'|'mssql'One*/dialect:'mysql'});classUserextendsModel{}User.init({firstname:{type:DataTypes.STRING,allowNull:false,},lastname:{type:DataTypes.STRING,}},{sequelize,modelName:'User'});console.log(User===sequelize.models.User)sequelize.define和model.init是等效的字段属性设置默认值constUser=sequelize.define('User',{firstname:{type:DataTypes.STRING,defaultValue:"志强"},.......},{//其他模型参数});annotationconstUser=sequelize.define('User',{firstname:{type:DataTypes.STRING,defaultValue:"zhiqiang",comment:"Comment"},},{//其他模型参数});Type可用字段类型数据库结构生成器包含建表时可以指定的各种字段类型:数据类型方法名描述stringDataTypes.STRINGVARCHAR(255)DataTypes.STRING(100)VARCHAR(100)DataTypes.STRING.BINARYVARCHARBINARYDataTypes.TEXTTEXTDataTypes.TEXT('tiny')TINYTEXTDataTypes.CITEXTCITEXT仅限PostgreSQL和SQLite。BooleanDataTypes.BOOLEANTINYINT(1)数字DataTypes.INTEGERINTEGERDataTypes.BIGINTBIGINTDataTypes.BIGINT(11)BIGINT(11)DataTypes.FLOATFLOATDataTypes.FLOAT(11)FLOAT(11)DataTypes.FLOAT(11,10)FLOAT(11,10))DataTypes.REALREAL只有PostgreSQL数据类型。REAL(11)REAL(11)仅限PostgreSQL。DataTypes.REAL(11,12)REAL(11,12)仅限PostgreSQL。DataTypes.DOUBLEDOUBLEDataTypes.DOUBLE(11)DOUBLE(11)DataTypes.DOUBLE(11,10)DOUBLE(11,10)DataTypes.DECIMALDECIMALDataTypes.DECIMAL(10,2)DECIMAL(10,2)DataTypes.INTEGER.UNSIGNED.ZEROFILLMySQL和MariaDB设置为无符号或零填充对于mysql/sqlite,DataTypes.DATE(6)DATETIME(6)对于mysql5.6.4+DataTypes.DATEONLYDATEUUIDDataTypes.UUID没有时间对于PostgreSQL和SQLite,会是UUID数据类型,对于mysql会变成char(36),UUID默认值设置{type:DataTypes.UUID,defaultValue:Sequelize.UUIDV4//orSequelize.UUIDV1}其他属性设置表名复数自定义表名复数表名,默认为数据库关联的表名在Users中添加配置去掉复数方式一:全局配置,实例化时添加freezeTableName配置constsequelize=newSequelize('sequelize','root','123456',{host:'localhost',dialect:'mysql',define:{freezeTableName:true}});方法二:单独模型配置//定义模型constUser=sequelize.define('User',{.........},{//其他模型参数//强制表名和模型名为一致的freezeTableNAme:true});自定义表名constUser=sequelize.define('User',{.....},{//其他模型参数//自定义表名tableName:"zq_user"});时间戳createdAt/updatedAt//定义模型constUser=sequelize.define('User',{.....},{//移除createdAt/updatedAt//timestamps:false//移除createdAt//createdAt:false,////删除updatedAt//updatedAt:false,});模型同步表////用户模型同步到数据库//User.sync({force:true})//生成的sqlCREATETABLEIFNOTEXISTS`zq_user`(`id`INTEGERNOTNULLauto_increment,`firstname`VARCHAR(255)NOTNULL,`lastname`VARCHAR(255),`createdAt`DATETIMENOTNULL,`updatedAt`DATETIMENOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDB;////一次性全部同步//sequelize.sync({force:true})deletetable//删除指定用户表//User.drop();//删除所有表//sequelize.降低();

最新推荐
猜你喜欢