皮皮网
皮皮网
双重底指标源码

【授权盗U源码】【tomcat 类的源码】【直播开源源码】sequelize源码

时间:2024-11-21 02:29:22 分类:时尚 编辑:hfunpro程序源码
1.2024年基于Node.js的最佳cms内容管理系统(国内)
2.使用Sequelize快速构建PostgreSQL数据的CRUD操作详解

sequelize源码

2024年基于Node.js的最佳cms内容管理系统(国内)

       禅CMS:一款基于Express和MySQL的高质量CMS管理系统,适用于商用企业级程序开发。它具备多种类型网站开发,基于模块化和插件化开发模式,易于扩展。优点包括使用简单、授权盗U源码集成采集功能、源码简单、程序易用以及有多企业案例。缺点是时间较短。推荐程度为五颗星。官网:禅CMS内容管理系统。

       DoraCMS:基于Nodejs+eggjs+mongodb编写的内容管理系统,结构简单,易于拓展,特别适合前端开发工程师做二次开发。功能齐全,具备会员模块。缺点是基于egg.js开发且长期未更新。推荐程度为四颗星。

       CmsWing:一款基于Egg.js、tomcat 类的源码Sequelize和GraphQL的电子商务平台及CMS建站系统,适用于PC端、手机端和微信公众平台。功能强大。缺点是并没有实现电商平台,基于落寞的框架eggjs,基于GraphQL上手使用难度较大。推荐程度为三颗星。

       NoderCMS:一款轻量级内容管理系统,使用Node.js + MongoDB开发,直播开源源码拥有灵活的内容模型以及完善的权限角色机制。优点是文档齐全。缺点是长期没更新。推荐程度为两颗星。

使用Sequelize快速构建PostgreSQL数据的CRUD操作详解

       之前写过一个专栏《布道API》来介绍API的REST风格及推荐实践,今天开始来构建一个管理系统的API服务,首先需要处理的就是数据存储,本文将结合实际开发总结在NodeJS下使用Sequelize快速构建PostgreSQL数据的CRUD操作。

       项目源代码:github.com/QuintionTang/pretender-service

Sequelize

       Sequelize是一个基于promise的Node.jsORM工具,它具有强大的源码包安装 apache事务支持、关联关系、预读和延迟加载、读取复制等功能,支持的数据库包括:PostgreSQL、MySQL、MariaDB、SQLite和MSSQL。

       Sequelize类是引用sequlize模块后获取一个顶级对象,通过它来创建sequlize实例,也可以通过该对象来获取模内其它对象的mysql select源码分析引用,如:Utils工具类、Transaction事务类等。创建实例后,可以通过实例来创建或定义Model(模型)、执行查询、同步数据库结构等操作。

       官方网站:docs.sequelizejs.com/

添加和配置

       在安装模块之前,首先安装开发工具Sequelize-CLI

sudonpminstall-gsequelize-cli

       接下来在项目目录下安装数据存储相关的模块。

npminstallsequelize--savenpminstallpgpg-hstore--save

       现在在项目根目录下创建文件.sequelizerc,代码如下:

constpath=require('path');module.exports={ "config":path.resolve('./config','db.json'),"models-path":path.resolve('./models'),'seeders-path':path.resolve('./seeders'),'migrations-path':path.resolve('./migrations')};

       该文件将告诉Sequelize初始化,以生成config、models到特定目录。接下来,输入命令初始化Sequelize。

sequelizeinit

       该命令将创建config/db.json,models/index.js,migrations和seeders目录和文件。命令执行完毕之后打开并编辑config/db.json来配置数据库连接信息。

{ "development":{ "username":"dbusername","password":"dbpassword","database":"crayon-admin","host":".0.0.1","dialect":"postgres","options":{ "operatorsAliases":false},"logging":false},"test":{ "username":"dbusername","password":"dbpassword","database":"crayon-admin","host":".0.0.1","dialect":"postgres"},"production":{ "username":"dbusername","password":"dbpassword","database":"crayon-admin","host":".0.0.1","dialect":"postgres"}}

       目录说明:

       migrations:所有迁移文件,通过sequelizedb:migrate创建相应数据表

       seeders:种子文件,即初始化需要插入到数据库中的数据,运行sequelizedb:seed:all

创建Models和Migrations

       使用CLI工具Sequelize-CLI创建administrators表

sequelizemodel:create--nameadministrators--attributesid:integer,add_time:integer,last_login:integer,username:string,email:string,login_ip:string

       执行后会生成两个文件

       /src/migrations/-create-administrators.js:创建数据表脚本,用于数据库初始化。

"usestrict";module.exports={ up:async(queryInterface,Sequelize)=>{ awaitqueryInterface.createTable("administrators",{ id:{ allowNull:false,autoIncrement:true,primaryKey:true,type:Sequelize.INTEGER,},add_time:{ type:Sequelize.INTEGER,},last_login:{ type:Sequelize.INTEGER,},username:{ type:Sequelize.STRING,},password:{ type:Sequelize.STRING,},email:{ type:Sequelize.STRING,},login_ip:{ type:Sequelize.STRING,},});},down:async(queryInterface,Sequelize)=>{ awaitqueryInterface.dropTable("administrators");},};

       /src/models/administrators.js:生成的model文件

"usestrict";const{ Model}=require("sequelize");module.exports=(sequelize,DataTypes)=>{ classadministratorsextendsModel{ }administrators.init({ id:{ type:DataTypes.INTEGER,autoIncrement:true,primaryKey:true,},add_time:DataTypes.INTEGER,last_login:DataTypes.INTEGER,username:DataTypes.STRING,password:DataTypes.STRING,email:DataTypes.STRING,login_ip:DataTypes.STRING,},{ sequelize,indexes:[{ unique:true,fields:["id"],},],freezeTableName:true,timestamps:false,//是否自动添加时间戳createAt,updateAtmodelName:"administrators",});returnadministrators;};

       现在执行命令:

sequelizedb:migrate

       执行成功后将在连接的数据库中创建数据表:administrators。

创建seed

       seed用于初始化插入数据,如管理员,在系统运行前需要创建一个默认账号,这些默认账号信息就写在seed文件中。

       创建seed命令如下:

sequelizeseed:create--nameadministrator

       执行成功后将会在seeders文件夹中创建文件,修改代码如下:

npminstallsequelize--savenpminstallpgpg-hstore--save0

       现在将seed中的数据插入到数据库中,执行一下命令:

npminstallsequelize--savenpminstallpgpg-hstore--save1创建Services

       创建文件夹services,文件夹中代码封装与model交互的方法,包括所有CRUD(创建,读取,更新和删除)操作,创建administrators.js,实现的逻辑为获取账号信息、更新账号信息,代码如下:

npminstallsequelize--savenpminstallpgpg-hstore--save2创建Controllers

       上面创建的services文件用于控制器,在控制器文件夹中创建一个名为administrators.js的文件,代码如下:

npminstallsequelize--savenpminstallpgpg-hstore--save3创建Routers

       在文件夹routers中创建文件administrators.js文件,代码如下:

npminstallsequelize--savenpminstallpgpg-hstore--save4创建入口

       现在来为服务创建接口,项目根目录下创建文件app.js,代码如下:

npminstallsequelize--savenpminstallpgpg-hstore--save5

       现在执行命令nodeapp.js启动服务,将看到终端效果如下:

       至此,完成一个基本的API登录服务,还有待完善,后续在迭代中完善。文章涉及的代码在GitHub上。

作者:天行无忌

本文地址:http://8o.net.cn/html/96b144698457.html

copyright © 2016 powered by 皮皮网   sitemap