egg 自学入门demo分享
2018-08,本文适用于对egg有兴趣想要了解的同学
项目主要文件目录结构
|—— app
    |—— controller
        |—— cook.js
    |—— model
        |—— cook.js
    |—— router.js
|—— config
    |—— config.default.js
    |—— plugin.js
|—— package.json
|—— README.md
安装
- npm i egg-init -g
 - egg-init egg-example --type=simple
 - cd egg-example
 - npm i
 
启动项目
- npm run dev
 
项目
本文主要是以搭建一个连接mongoDB的后端,以提供api接口
连接数据库
- 引入数据库插件,在plugin.js文件中添加如下代码
 
exports.mongoose = {
    enable: true,
    package: 'egg-mongoose',
};
- 在config.default.js中添加如下配置
 
config.mongoose = {
    client: {
        url: 'mongodb://127.0.0.1:27017/database-name',
    },
}
编写model
在model文件下添加,cook.js 文件
module.exports = app => {
    const mongoose = app.mongoose;
    const Schema = mongoose.Schema;
    const CookeSchema = new Schema({
        _id: { type: Schema.Types.ObjectId },
        name: { type: String  },
        img: { type: String  },
        step: { type: String  }
    }, {
        versionKey: false
    });
    return mongoose.model('cooks', CookeSchema);
}
注意如果使用mongoDB中的_id时type的类型,以及如何去掉__v 版本锁字段。
编写controller
在controller文件夹下添加,cook.js文件
const Controller = require('egg').Controller;
class HomeController extends Controller {
  async list() {
    this.ctx.response.body = {
      result: await this.ctx.model.Cook.find({}, {'_id': 0})
    };
  }
  async listOne() {
    const { id } = this.ctx.params
    this.ctx.body = {
      result: await this.ctx.model.Cook.find({ '_id': id }, {'_id': 0})
    };
  }
}
module.exports = HomeController;
这里用于获取数据库中的数据
添加路由
module.exports = app => {
  const { router, controller } = app;
  router.get('/cook/', controller.cook.list);
  router.get('/cook/:id', controller.cook.listOne);
};
确保数据库能连接成功后,便可以启动项目。
本文只是辅助介绍快速搭建一个基本的egg项目,具体内容请参考:https://eggjs.org/
若有疑问或错误,请留言,谢谢!Github blog issues
egg 自学入门demo分享的更多相关文章
- scrapy 自学入门demo分享
		
[toc] 本文基于python 3.7.0,win10平台: 2018-08 完整项目代码:https://github.com/NameHewei/python-scrapy 安装 安装pytho ...
 - 史诗手册!微信小程序新手自学入门宝典!
		
一.小程序官方指南 1:官方开发工具下载: https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=201714 0.12 ...
 - WPF自学入门(三)WPF路由事件之内置路由事件
		
有没有想过在.NET中已经有了事件机制,为什么在WPF中不直接使用.NET事件要加入路由事件来取代事件呢?最直观的原因就是典型的WPF应用程序使用很多元素关联和组合起来,是否还记得在WPF自学入门(一 ...
 - WPF自学入门(十一)WPF MVVM模式Command命令
		
在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式.正如上一篇文章中在开始说的,MVVM的目的是为了最大限度地降低了 ...
 - WPF自学入门(十二)WPF MVVM模式提取函数
		
我们平时在写代码时为了不重复写代码,会进行复制代码或者写通用方法.今天我们就来把上传做的函数提取成为通用的方法调用.把上次写的函数提取为两个主要的文件:ObserableObject和RelayCom ...
 - WPF自学入门(十一)WPF MVVM模式Command命令        WPF自学入门(十)WPF MVVM简单介绍
		
WPF自学入门(十一)WPF MVVM模式Command命令 在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式 ...
 - ReactJs 入门DEMO(转自别人)
		
附件是分享的一些他人的ReactJs入门DEMO,以前版本使用的是JSXTransformer.js,新版的用browser.min.js替代了. DEMO 下载地址:http://files.cnb ...
 - Maven+SpringMVC+Dubbo 简单的入门demo配置
		
转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...
 - WPF自学入门(六)WPF带标题的内容控件简单介绍
		
在WPF自学入门(二)WPF-XAML布局控件的文章中分别介绍StackPanel,WarpPanel,DockPanel,Grid,Canvas五种布局容器的使用,可以让我们大致了解容器可以使用在什 ...
 
随机推荐
- MySQL数据库设计与开发规范
			
目录 1. 规范背景与目的 2. 设计规范 2.1. 数据库设计 2.1.1. 库名 2.1.2. 表结构 2.1.3. 列数据类型优化 2.1.4. 索引设计 2.1.5. 分库分表.分区表 2.1 ...
 - flask 请求上下文源码(转)
			
本篇阅读目录 一.flask请求上下文源码解读 二.http聊天室(单聊/群聊)- 基于gevent-websocket 回到顶部 转:https://www.cnblogs.com/li-li/p/ ...
 - django基础知识之GET属性:
			
GET属性 QueryDict类型的对象 包含get请求方式的所有参数 与url请求地址中的参数对应,位于?后面 参数的格式是键值对,如key1=value1 多个参数之间,使用&连接,如ke ...
 - Flags Over Objects
			
The Flags Over Objects anti-pattern occurs when behavior is written outside of an object by inspecti ...
 - 華氏溫度轉化為攝氏溫度的簡單JavaScript代碼
			
今天,跟著W3School學到了"JavaScript函數",代碼都挺簡單的,在運算符調用函數的地方寫了一個小程序.原碼程序是這樣的: <!DOCTYPE html> ...
 - 《转载黑马教程》HTML&&CSS讲义0,,包含教程_仅供参考
			
今日内容 1. web概念概述 2. HTML web概念概述 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务 ...
 - 新手上路—Java的"瑞士军刀"
			
“ Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大!这在我们的日常开发工作中,无疑是如虎添翼,事半功倍. Jodd = Tools + IoC + MVC ...
 - Python 3.5学习笔记(第一章)
			
本章内容: 1.安装python 3.5 和 PyCharm 社区版 2.第一个python程序 3.变量 4.字符编码 5.用户输入 6.字符串格式化输出 7.if .else .elif 8.fo ...
 - hdu6375 度度熊学队列
			
度度熊学队列 题目传送门 解题思路 STL大法好.直接用deque,但是N的范围很大,如果直接开那么多的deque会爆内存,所以用map< int, deque< int>>, ...
 - liunx软件安装与网络管理和远程访问
			
三.软件安装1.RPM包管理器进行软件安装 语法:rpm[选项][软件包] -i 安装一个以前从来未安装过的软件包 -v 将安装过程打印在屏幕上 -h 以字符“#”显示安装进度条 rpm -q[软件包 ...