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

nodejs数据库orm扩展-sequelize

时间:2023-04-03 23:18:57 Node.js

Sequelize是nodejs的orm库。使用过laravelORM的可以很快上手。具体文档官网github简单代码democonst{Sequelize,DataTypes,Model,QueryTypes,Op}=require("sequelize");constsequelize=newSequelize("sqlite://sql.db",{logging:false});classUserextendsModel{}classAddressextendsModel{}User.init({//在这里定义模型属性id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true,},name:{type:DataTypes.STRING,unique:true,//allowNull默认为truevalidate:{asyncisUnique(name){constres=awaitUser.findOne({where:{name}})if(res)thrownewError('Usernamealreadyexists')},//len:[1,2]}},},{//这是另一个模型参数sequelize,//我们需要传递连接示例//modelName:"User",//我们需要选择模型名tableName:'users'//表名,默认为模型名的复数词});Address.init({id:{type:DataTypes.INTEGER,primaryKey:true,autoIncrement:true,},名称:{类型:DataTypes.STRING,unique:true,//allowNull默认为true},},{sequelize,modelName:"Address",});//模型关系多对多User.belongsToMany(Address,{through:"userAddress",as:'地址'});//through表示中间表的名称,查询别名Address.belongsToMany(User,{through:"userAddress"});(async()=>{try{//awaitsequelize.sync({alter:true});//将模型同步到数据库-创建表//constuser=awaitUser.findOne({where:{name:{[Op.like]:'%small%'}}});//基本查询const[user]=awaitUser.findOrCreate({where:{name:'Xiaoxiao'},include:'addres'});//顺便查询关联模型的数据const[address]=awaitAddress.findOrCreate({where:{name:'小小德的地址'}});awaituser.addAddress(address);//增加关联console.log(user.toJSON());}catch(e){console.log(e);}})();