sequelize入门在使用NodeJS操作关系型数据库时,为了方便,通常会选择合适的ORM(ObjectRelationshipModel)框架。毕竟直接操作SQL比较麻烦。通过ORM框架,我们可以使用面向对象的方法来操作表。安装$npminstall--saveco$npminstall--savesequelize$npminstall--savemysqlcodetemplatevarSequelize=require('sequelize');varco=require('co');co(function*(){//代码在这里}).catch(function(e){console.log(e);});建立数据库连接varsequelize=newSequelize('db_entry',//数据库名'root',//用户名'',//用户密码{'dialect':'mysql',//数据库使用mysql'host':'localhost',//数据库服务器ip'port':3306,//数据库服务器端口'define':{//字段之间用下划线(_)分隔(默认是驼峰命名风格)'underscored':true}});createtableORM#用户信息表createTABLExxts_users(idINT(11)NOTNULLAUTO_INCREMENT,usernamevarchar(30)NOTNULL,passwordVARCHAR(30)NOTNULL,sexINT(2)NOTNULLDEFAULT1,ageVARCHAR(10)NULL,photoVARCHAR(30)NULL,realnameVARCHAR(30)NULL,created_atDATETIMENOTNULL,updated_atDATETIMENOTNULL,PRIMARYKEY(id));varUser=sequelize.define(//这个值在访问模型相关的模型时也会作为属性名,所以建议使用小写的'xxts_users',//字段定义(主键,created_at和updated_at默认包含,不需要特殊定义){'username':{'type':Sequelize.STRING(30),'allowNull':false},'password':{'type':Sequelize.STRING(30),'allowNull':false},'sex':{'type':Sequelize.INTEGER(2),'allowNull':false},'age':{'type':Sequelize.STRING(10),'allowNull':true},'photo':{'type':续集。STRING(30),'allowNull':true},'realname':{'type':续集。STRING(30),'allowNull':true}},{//自定义表名'freezeTableName':true,'tableName':'xxts_users',//是否需要添加createdAt,updatedAt,deletedAt字段'timestamps':true,//CreateAt字段不是必需的//'createdAt':false,//重命名updatedAt字段//'updatedAt':'utime'//重命名deletedAt字段//还需要将paranoid设置为true(该模式下,删除数据时不会进行物理删除,但会设置deletedAt为当前时间//'deletedAt':'dtime',//'paranoid':true});说明:SQL会自动执行的意思就是当你主动调用sync的时候,看起来是这样的:User.sync({force:true});(加力:true,会先删表再建表)。我们也可以先定义表结构,再定义??Sequelize模型。此时,不需要同步。两者在定义阶段是没有任何关系的,直到我们真正开始操作模型时,我们才不会接触到表的操作,当然我们还是要尽量保证模型的同步和表格(您可以使用一些迁移工具)。CRUD通过Sequelize得到的模型对象都是DAO(DataAccessObject)对象。这些对象会有很多操作数据库表的实例对象方法(如:save、update、destroy等),需要获得“干净”的JSON对象才可以调用get({'plain':true})。可以通过模型的类方法(例如:findById、findAll等)获取模型对象。//添加函数user_add(){co(function*(){varuser=yieldUser.create({用户名:“小明”,密码:“技术部”,性别:2,年龄:32,照片:“照片.jpg",realname:"admin"});console.log(user.get({plain:true}));}).catch(function(e){console.log(e);});}//修改functionuser_update(){co(function*(){varuser=yieldUser.update({username:"小白白"},{where:{id:1}});console.log("更新成功");}).catch(function(e){console.log(e);});}//删除函数user_destroy(){co(function*(){varuser=yieldUser.destroy({where:{id:1}});console.log("删除成功");}).catch(function(e){console.log(e);});}//查询函数user_query(){co(function*(){varuser=yieldUser.findAll().spread(function(item,created){console.log(item.get({plain:真}));});}).catch(function(e){console.log(e);});}user_query();
