2018-08,本文适用于对egg有兴趣想要了解的同学

完整项目代码:https://github.com/NameHewei/node-egg

项目主要文件目录结构

|—— app
|—— controller
|—— cook.js
|—— model
|—— cook.js
|—— router.js
|—— config
|—— config.default.js
|—— plugin.js
|—— package.json
|—— README.md

安装

官网: https://eggjs.org/zh-cn/

  1. npm i egg-init -g
  2. egg-init egg-example --type=simple
  3. cd egg-example
  4. npm i

启动项目

  • npm run dev

项目

本文主要是以搭建一个连接mongoDB的后端,以提供api接口

连接数据库

  1. 引入数据库插件,在plugin.js文件中添加如下代码
exports.mongoose = {
enable: true,
package: 'egg-mongoose',
};
  1. 在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分享的更多相关文章

  1. scrapy 自学入门demo分享

    [toc] 本文基于python 3.7.0,win10平台: 2018-08 完整项目代码:https://github.com/NameHewei/python-scrapy 安装 安装pytho ...

  2. 史诗手册!微信小程序新手自学入门宝典!

    一.小程序官方指南 1:官方开发工具下载: https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=201714 0.12 ...

  3. WPF自学入门(三)WPF路由事件之内置路由事件

    有没有想过在.NET中已经有了事件机制,为什么在WPF中不直接使用.NET事件要加入路由事件来取代事件呢?最直观的原因就是典型的WPF应用程序使用很多元素关联和组合起来,是否还记得在WPF自学入门(一 ...

  4. WPF自学入门(十一)WPF MVVM模式Command命令

    在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式.正如上一篇文章中在开始说的,MVVM的目的是为了最大限度地降低了 ...

  5. WPF自学入门(十二)WPF MVVM模式提取函数

    我们平时在写代码时为了不重复写代码,会进行复制代码或者写通用方法.今天我们就来把上传做的函数提取成为通用的方法调用.把上次写的函数提取为两个主要的文件:ObserableObject和RelayCom ...

  6. WPF自学入门(十一)WPF MVVM模式Command命令 WPF自学入门(十)WPF MVVM简单介绍

    WPF自学入门(十一)WPF MVVM模式Command命令   在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式 ...

  7. ReactJs 入门DEMO(转自别人)

    附件是分享的一些他人的ReactJs入门DEMO,以前版本使用的是JSXTransformer.js,新版的用browser.min.js替代了. DEMO 下载地址:http://files.cnb ...

  8. Maven+SpringMVC+Dubbo 简单的入门demo配置

    转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...

  9. WPF自学入门(六)WPF带标题的内容控件简单介绍

    在WPF自学入门(二)WPF-XAML布局控件的文章中分别介绍StackPanel,WarpPanel,DockPanel,Grid,Canvas五种布局容器的使用,可以让我们大致了解容器可以使用在什 ...

随机推荐

  1. Codeforces 617E:XOR and Favorite Number(莫队算法)

    http://codeforces.com/problemset/problem/617/E 题意:给出n个数,q个询问区间,问这个区间里面有多少个区间[i,j]可以使得ai^ai+1^...^aj ...

  2. C# 中的委托和事件本质讲解

    C# 中的委托和事件 文中代码在VS2005下通过,由于VS2003(.Net Framework 1.1)不支持隐式的委托变量,所以如果在一个接受委托类型的位置直接赋予方法名,在VS2003下会报错 ...

  3. [开源]OSharpNS 步步为营系列 - 3. 添加业务服务层

    什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架.这个 ...

  4. 在eclipse中利用正则表达式查找替换

    众所周知,eclipse是可以用正则表达式来进行查找的,那么怎么利用正则表达式进行替换呢? 方法也很简单,就是在Replace with: 里面输入$来代表捕获型括号的匹配结果,$1为第一个匹配结果, ...

  5. 洛谷 P4363 [九省联考2018]一双木棋chess 题解

    题目链接:https://www.luogu.org/problemnew/show/P4363 分析: 首先博弈,然后考虑棋盘的规则,因为一个子在落下时它的上面和左面都已经没有空位了,所以棋子的右下 ...

  6. 问题解决:Maven execution terminated abnormally (exit code 1)

    Maven execution terminated abnormally (exit code 1) 修改setting.xml中的镜像位置 如下就可以了 <mirror> <id ...

  7. 关于页面scroolTop的获取

    scroolTop 发现问题 获取页面滚动高度的时候: 当html页面设置了DTD<!DOCTYPE html> document.body.scroolTop // 值总是为0: doc ...

  8. nginx(二)

    nginx rewrite ​ Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向.rewrite只能放在server{},location{},if{}中,并且 ...

  9. 《C# 语言学习笔记》——委托

    委托是一种可以把引用存储为函数的类型. 委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字.委托的声明制定了一个返回类型和一个参数列表. 在定义了委托后,就可以声明该委托类型的变量 ...

  10. MetInfo企业网站管理系统 5.3 全新安装

    在phpStudy\PHPTutorial\WWW的文件下创建MetInfo文件夹.把MetInfo5.3解压到MetInfo文件夹里 用浏览器访问127.0.0.1/MetInfo 同意安装 下一步 ...