eggjs&sequelize使用教程一(环境搭建)

2023-11-06

前言

原来想写express+sequelize的,但是公司现在放弃了express,转战eggjs,所以这个的教程就以egg为基础

安装egg

官方有完整的教程

需要安装的模块 package.js

zengwe@zengwe-PC:egg-example$ cat package.json 
{
  "name": "example",
  "version": "1.0.0",
  "description": "",
  "private": true,
  "dependencies": {
    "egg": "^1.9.0",
    "egg-scripts": "^2.1.0",
    "egg-sequelize": "^3.1.0",
    "mysql2": "^1.5.0"
  },
  "devDependencies": {
    "autod": "^2.10.0",
    "autod-egg": "^1.0.0",
    "egg-bin": "^4.3.5",
    "egg-ci": "^1.8.0",
    "egg-mock": "^3.13.0",
    "eslint": "^4.10.0",
    "eslint-config-egg": "^5.1.0",
    "webstorm-disable-index": "^1.2.0"
  },
  "engines": {
    "node": ">=8.9.0"
  },
  "scripts": {
    "start": "egg-scripts start --daemon",
    "stop": "egg-scripts stop",
    "dev": "egg-bin dev",
    "debug": "egg-bin debug",
    "test": "npm run lint -- --fix && npm run test-local",
    "test-local": "egg-bin test",
    "cov": "egg-bin cov",
    "lint": "eslint .",
    "ci": "npm run lint && npm run cov",
    "autod": "autod"
  },
  "ci": {
    "version": "8"
  },
  "repository": {
    "type": "git",
    "url": ""
  },
  "author": "",
  "license": "MIT"
}

整体的结构目录

zengwe@zengwe-PC:egg-example$ tree ./ -I node_modules
./
├── app
│   ├── controller
│   │   └── home.js
│   ├── model
│   │   └── movie.js
│   ├── public
│   ├── router.js
│   └── service
│       └── test.js
├── appveyor.yml
├── config
│   ├── config.default.js
│   └── plugin.js
├── logs
│   └── example
│       ├── common-error.log
│       ├── egg-agent.log
│       ├── egg-web.log
│       └── example-web.log
├── package.json
├── package-lock.json
├── README.md
├── README.zh-CN.md
├── run
│   ├── agent_config.json
│   ├── agent_config_meta.json
│   ├── application_config.json
│   └── application_config_meta.json
└── test
    └── app
        └── controller
            └── home.test.js

配置sequelize

我在config目录下新建一个config.sequelize.js的文件用来放sequelize的配置,因为这个配置文件可能会有很多内容,包括sequelize全局钩子函数或者读写分离等等,所以单独分出一个文件,配置如下

'use strict';
const equelize = {
  dialect: 'mysql', // support: mysql, mariadb, postgres, mssql
  database: 'douban_test',
  host: 'localhost',
  port: '3306',
  username: 'root',
  password: '123456',
};
module.exports = equelize;

在config.default.js中引入

'use strict';
const sequelizeConfig = require('./config.sequelize');
module.exports = appInfo => {
  const config = exports = {};
  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1510991679580_9861';
  // add your config here
  config.middleware = [];
  config.sequelize = sequelizeConfig;
  return config;
};

启用sequelize模块

在config文件下的plugin.js中添加这个模块

'use strict';

// had enabled by egg
// exports.static = true;
exports.sequelize = {
  enable: true,
  package: 'egg-sequelize',
};
exports.security = {
  enable: false,
};

ps:这里关闭security的原因是不用每次动态的添加token,开发阶段很麻烦

在app的目录下建一个model的文件并建一个model

'use strict';
module.exports = app => {
  const { INTEGER, STRING } = app.Sequelize;
  const Movie = app.model.define('Movie', {
    id: {
      type: INTEGER,
      autoIncrement: true,
      primaryKey: true,
    },
    name: {
      type: STRING(100),
      allowNull: false,
    },
  }, {
    freezeTableName: true,
    tableName: 'z_movie',
    timestamps: false,
  });
  return Movie;
};

在homeController中试一次

'use strict';

const Controller = require('egg').Controller;

class HomeController extends Controller {
  * index() {
    const serviceRes = yield this.ctx.service.test.index();
    const result = yield this.app.model.Movie.findAll();
    console.log(result);
    this.ctx.body = 'hi, egg' + serviceRes;
  }
}

module.exports = HomeController;

上面是现在的controller的写法原来的是

module.exports = app => {
    return class HomeController extends app.Controller {
      * index() {
            const result = yield app.model.Movie.findAll();
            console.log(result);
            this.ctx.body = 'hi, egg' + serviceRes;
      }
}

module.exports = HomeController;

运行

npm run dev

zengwe@zengwe-PC:egg-example$ npm run dev

> example@1.0.0 dev /media/zengwe/Bcode/egg/douban/egg-example
> egg-bin dev

2017-11-19 23:14:54,132 INFO 12666 [master] egg version 1.11.0
sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators node_modules/sequelize/lib/sequelize.js:236:13
2017-11-19 23:14:57,327 INFO 12672 [model] SELECT VERSION() as `version` (7ms)
2017-11-19 23:14:57,354 INFO 12672 [model] SELECT 1+1 AS result (3ms)
2017-11-19 23:14:57,371 INFO 12666 [master] agent_worker#1:12672 started (3227ms)

bingo成功

访问 http://127.0.0.1:7001

2017-11-19 23:18:28,744 INFO 12683 [model] SELECT `id`, `name` FROM `z_movie` AS `Movie`; (2ms)
[ Movie {
    dataValues: { id: 1, name: '无间道' },
    _previousDataValues: { id: 1, name: '无间道' },
    _changed: {},
    _modelOptions: 
     { timestamps: false,
       validate: {},
       freezeTableName: true,
       underscored: true,
       underscoredAll: false,
       paranoid: false,
       rejectOnEmpty: false,
       whereCollection: null,
       schema: null,
       schemaDelimiter: '',
       defaultScope: {},
       scopes: [],
       hooks: {},
       indexes: [],
       name: [Object],
       omitNull: false,
       tableName: 'z_movie',
       sequelize: [Object],
       uniqueKeys: {} },
    _options: 
     { isNewRecord: false,
       _schema: null,
       _schemaDelimiter: '',
       raw: true,
       attributes: [Object] },
    __eagerlyLoadedAssociations: [],
    isNewRecord: false } ]

bingo成功

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

eggjs&sequelize使用教程一(环境搭建) 的相关文章

  • sequelize的where条件接受动态参数传入

    用法1 问题场景 传入参数 xff1a 数组array 数组元素不定 目标 要实现逻辑 xff1a 遍历数组 xff0c 根据inverted的值对同一个表字段增加一个like查询 要生成的sql语句 xff08 where条件部分 xff
  • 解决Sequelize查询遇到的问题

    解决Sequelize查询遇到的问题 前言查主表全部数据及include xff08 订单表及请假表 xff09 定义一个数组 xff0c 然后遍历不满足条件的 xff0c 然后返回满足的条件 前言 这篇文章可能只适合我这个脑残来记录了 x
  • Sequelize的where进阶操作:$

    当一个表A需要连接表1和表2时 xff0c 且在关联查询时只要表1和表2任意一个有数据则A中记录需要被查出 const option 61 where this app Sequelize Op or 39 positiveDatas ui
  • orm框架sequelize的where条件接受动态参数传入

    在nodejs项目中 xff0c 接口会接收从前台传来的查询参数 xff0c 接口里面根据请求参数动态查询数据库 xff0c 例如分页参数等等 xff1b sequelize官方文档中并没有提及如何做 xff0c 不过可以利用sequeli
  • eggjs

    https editor csdn net md not checkout 61 1 amp spm 61 1001 2014 3001 4503 https blog csdn net weixin 42304193 article de
  • Spring IOC 容器:掌握 Spring 的核心技术

    Spring 是一个非常流行和强大的 Java 开发框架 它可以帮助我们简化和优化 Java 项目的开发过程 Spring 的核心技术之一就是 IOC Inversion of Control 控制反转 它可以实现对象之间的解耦 让对象的创
  • FactoryBean和BeanFactory:Spring IOC容器的两个重要角色简介

    目录 一 简介 二 BeanFactory 三 FactoryBean 四 区别 五 使用场景 总结 一 简介 在Spring框架中 IOC Inversion of Control 容器是一个核心组件 它负责管理和配置Java对象及其依赖
  • Mybatis对数据库数据的查询

    简单类型的映射 返回的是简单基本类型 接口中的定义 int getAdminCount 返回数据库总共还几条数据 xml中具体的实现
  • 过滤器使用与bean注入

    1 web xml中各元素启动顺序 在项目启动时 监听器listener最先初始化 然后是过滤器filter 最后是servlet Spring监听器在启动时会读取spring配置文件 进行spring容器的初始化 springMVC的di
  • eggjs&sequelize使用教程一(环境搭建)

    前言 原来想写express sequelize的 但是公司现在放弃了express 转战eggjs 所以这个的教程就以egg为基础 安装egg 官方有完整的教程 需要安装的模块 package js zengwe zengwe PC eg
  • node后台快速开发框架

    任何可以用 JavaScript 来写的应用 最终都将用 JavaScript 来写 node js是用JS语言编写的 JaveScript已经是世界上最流行的语言之一 用它可以实现任何功能需求 无论是后台开发 前端 App 桌面应用程序
  • mybatis5-分页插件.md

    一 jar包 逆向工程不支持分页 PageHelper 底层使用拦截器 二 配置拦截器
  • eggjs中使用jwt

    开发接口时需要生成token 和校验token egg jwt就是一个很不错的插件 下边就教大家如何使用 废话不多说 先看效果 开始教程 安装包 yarn add egg jwt 全局引入jwt config plugin js modul
  • Spring Boot:让你轻松掌握自动装配的奥秘

    Spring Boot是基于Spring框架开发的一种应用框架 它通过自动装配机制 大大简化了Spring应用的开发和部署 使开发者可以更加专注于业务逻辑的实现 而无需过多关注Bean的实例化和装配过程 本文将从以下几个方面介绍Spring
  • gRpc指南

    本文翻译自官网 原文 https grpc io docs languages java quickstart 快速开始 下面通过一个简单的样例 让你快速上手基于java的gRpc的使用 前置条件 JDK7以上版本 获取示例代码 示例代码是
  • shardingsphere引发 java.lang.String cannot be cast to java.lang.Integer异常

    错误描述 mysql数据库查询sql在数据库连接工具中可以正常运行 在加入了shardingsphere的jar包的项目中抛如下异常 java lang ClassCastException java lang String cannot
  • Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause

    Exception in thread main org apache ibatis exceptions PersistenceException Error building SqlSession The error may exist
  • Spring Boot中如何编写优雅的单元测试

    单元测试是指对软件中的最小可测试单元进行检查和验证 在Java中 单元测试的最小单元是类 通过编写针对类或方法的小段代码 来检验被测代码是否符合预期结果或行为 执行单元测试可以帮助开发者验证代码是否正确实现了功能需求 以及是否能够适应应用环
  • Mybatis对数据的增删改查

    文章目录 创建sql的映射文件 增加 插入数据 修改 删除 查找 向数据库参数传递 简单参数 多个参数 传入对象 使用map传递 Mybatis的基本增删改查总的代码演示 创建sql的映射文件
  • SSM框架和Spring Boot+Mybatis框架的性能比较?

    SSM框架和Spring Boot Mybatis框架的性能比较 没有一个绝对的答案 因为它们的性能受到很多因素的影响 例如项目的规模 复杂度 需求 技术栈 团队水平 测试环境 测试方法等 因此 我们不能简单地说哪个框架的性能更好 而是需要

随机推荐

  • 宝塔后渗透-添加用户_反弹shell

    更新时间 2022年11月21日 1 背景介绍 对于想拿到bt后台来说 非常的艰难 无非是通过bypass之后提权 直接拿到服务器的root权限 然后再去宝塔后台 当然 还有一种运气十分爆棚的方法 发现了bt的账密信息 可以直接登陆了bt后
  • 电磁兼容RE典型整改案例分析

    1 可视对讲门铃EMI解决方案 客户介绍 珠海某电子科技有限公司是一家专门从事智能家居和楼宇对讲生产 研发 销售为一体的科技型企业 经客户转介绍认识 因其有一个新研发的高端出口可视对讲系统在深圳宝安某检测公司进行空间 RE 辐射测试EN55
  • LVGL8学习之Flex布局2

    这一篇来学习Flex布局的把项目按行包裹 且让他们周围的控件平均 Arrange items in rows with wrap and even spacing 还是通过codeblock来模拟代码的运行 代码如下 void lv fle
  • vue高级特性

    Vue是一款流行的JavaScript框架 它可以帮助我们构建高效 可维护的Web应用程序 本篇文章中 我将给大家分享三个Vue的高级技术 并且详细地讲解它们的实现原理 动态组件 动态组件是Vue中非常有用的一项功能 它允许我们在不同的组件
  • 07:STM32----ADC模数转化器

    目录 1 简历 2 逐次逼近型ADC 3 ADC基本结构 4 输入通道 5 规则组的4种转换模式 1 单次转化 非扫描模式 2 连续转化 非扫描模式 3 单次转化 扫描模式 4 单次转化 扫描模式 6 触发控制 7 数据对齐 8 转化时间
  • Unity面试题:热更新篇

    请简要介绍Unity热更新的原理和实现方式 答 Unity热更新的原理是通过将游戏的资源和代码分离 将代码部分放置在服务器端 游戏启动时通过网络下载更新的代码并动态加载 以达到实现热更新的目的 实现方式包括AssetBundle ILRun
  • 查看是否有主键_详解MySQL数据库主键信息及无主键表

    概述 总结一下MySQL数据库查看无主键表的一些sql 一起来看看吧 1 查看表主键信息 查看表主键信息 SELECT t TABLE NAME t CONSTRAINT TYPE c COLUMN NAME c ORDINAL POSIT
  • 弱网测试出现的问题解决思路

    摘自弱网测试时碰到的问题和解决方案再加上自己的一些遇到的解决 1 没进入到后台 可以在前端请求开始时候加个定时器 在请求完毕 或者一定时间 删除定时器 2 现象 用户登录应用时下载初始化数据 下载过程中因网速太慢点击取消并重新登录 数据初始
  • Pytorch 基础之张量索引

    本次将介绍一下 Tensor 张量常用的索引与切片的方法 1 index 索引 index 索引值表示相应维度值的对应索引 a torch rand 4 3 28 28 print a 0 shape 返回维度一的第 0 索引 tensor
  • jfinal-admin 后台框架永久开源

    jfinal admin 是什么 jfinal admin是一个基于jfinal的后台管理开发框架 能帮助你使用很少的时间和代码量开发出功能完备的管理后台 最新代码请切换到 develop 分支 集组织机构管理 用户管理 角色管理 菜单管理
  • C语言【判断一个整数是否为素数】

    include
  • U-Boot命令大全(功能参数及用法)

    本文转载至 http www cnblogs com farsight2011 p 3301126 html U Boot上电启动后 按任意键可以退出自动启动状态 进入命令行 U Boot 2010 03 Sep 25 2011 16 18
  • NZ系列工具NZ02:VBA读取PDF使用说明

    分享成果 随喜正能量 时光绽放并蒂莲 更是一份殷殷嘱托 更是一份诚挚祝福 是一份时光馈赠 又是一份时光陪伴 我的教程一共九套及VBA汉英手册一部 分为初级 中级 高级三大部分 是对VBA的系统讲解 从简单的入门 到数据库 到字典 到高级的网
  • Java学习日记10——Java中的变量及其传递

    Java学习日记10 变量及其传递 引用类型和基本类型变量的传递区别 变量的定义在前面已经讲解过了 点击这里 可以查看原文 这里的分类会略微不通过与之前 这里的变量主要分为字段变量和局部变量 1 在存储角度来看 字段变量是对象的一部分 存放
  • 【K8S】kubernetes集群架构与组件

    文章目录 K8S kubernetes集群架构与组件 kubernetes 组件 master组件 node组件 整体流程 POD终止过程 K8S kubernetes集群架构与组件 kubernetes 组件 K8S是属于主从设备模型 M
  • 华为OD机试真题 Java 实现【记票统计】【牛客练习题】

    一 题目描述 请实现一个计票统计系统 你会收到很多投票 其中有合法的也有不合法的 请统计每个候选人得票的数量以及不合法的票数 注 不合法的投票指的是投票的名字不存在n个候选人的名字中 数据范围 每组输入中候选人数量满足 1 n 100 总票
  • 一个将字符串转驼峰式的函数

    function camelCase str return str split map v gt v replace b w g function fl return fl toUpperCase jion camelCase hello
  • MediaScannerService研究

    2019独角兽企业重金招聘Python工程师标准 gt gt gt MediaScannerService研究 侯 亮 本文以Android 5 1为准 1 概述 MediaScannerService是Android平台提供的一个用于扫描
  • 通过navigator判断运行环境

    一 Navigator是什么 Navigator 对象包含有关浏览器的信息 二 参数 1 用户代理 navigator userAgent 用户代理 Mozilla 5 0 Windows NT 10 0 WOW64 AppleWebKit
  • eggjs&sequelize使用教程一(环境搭建)

    前言 原来想写express sequelize的 但是公司现在放弃了express 转战eggjs 所以这个的教程就以egg为基础 安装egg 官方有完整的教程 需要安装的模块 package js zengwe zengwe PC eg