1.egg.js官网只推荐了mysqle,要用mongodb得另找资料。通过查找,大家都在用Mongoose连接,于是乎学习

网站链接:https://www.npmjs.com/package/egg-mongoose

2.第一步:安装

npm i egg-mongoose --save  

3.配置

安装完成之后在目录/config/plugin.js中引用

exports.mongoose = {
enable: true,
package: 'egg-mongoose',
};

在/config/config.default.js中加入

// 数据库配置
exports.mongoose = {
client: {
url: 'mongodb://127.0.0.1:27017/egg_article', // 你的数据库地址,egg_article是你数据库得名字
options: {
useNewUrlParser: true,
},
},
};

4.简单得列子

在app下新建文件夹model,model下新建article.js文件,完整路径app/model/article.js

article.js内容

'use strict';

module.exports = app => {
const mongoose = app.mongoose;
const Schema = mongoose.Schema;
// 下面得操作是连接数据库
const ArticleSchema = new Schema({
// 修改和新增用到,规定字段得类型和其他条件等
title: {
type: String,
required: true,
},
_id: {
type: Schema.ObjectId,
ref: 'Tags',
required: true,
},
summary: {
type: String,
},
}, { versionKey: false }); return mongoose.model('Article', ArticleSchema, 'article'); // 我的理解:Article是指定查找的入口,随便取;ArticleSchema是参数;article是你数据集合表的名称
};

app/service/article.js

'use strict';

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

class ArticleService extends Service {
/**
* 根据ID获取单个项目
*/
async getProjectById() {
const { ctx, app } = this;
try {
const results = await ctx.model.Article.find({ // Article为modal/article.js里面命名的名字
_id: app.mongoose.Types.ObjectId('5da034149b6e823ca2ea809d'),
});
return results;
} catch (err) {
ctx.body = JSON.stringify(err);
}
}
}
module.exports = ArticleService;

app/controller/article.js

'use strict';
const Controller = require('egg').Controller; class ArticleController extends Controller {
async index() {
const { ctx } = this;
const res = await ctx.service.article.getProjectById();
ctx.body = res; // 返回值显示
}
}
module.exports = ArticleController;

router.js

'use strict';

/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller } = app;
router.get('/', controller.home.index);
router.get('/article', controller.article.index);
};

访问地址栏要改到/article

在egg.js中使用mongodb的更多相关文章

  1. Egg.js 中入参的校验

    日常作业中免不了频繁处理 GET/POST 的入参,你当然可以每个 action 中都重复地去做这些事情, 从 query 或 body 取出入参, 对可选的入参进行判空, 处理入参的类型转换, 对入 ...

  2. 在 Nest.js 中使用 MongoDB 与 TypeORM

    在 Nest.js 中使用 MongoDB 与 TypeORM 首先要在 database 文件夹里建立DatabaseModule模块文件, // database/database.module. ...

  3. Egg.js中使用sequelize事务

    对数据库的操作很多时候需要同时进行几个操作,比如需要同时改动几张表的数据,或者对同一张表中不同行(row)或列(column)做不同操作,比较典型的例子就是用户转账问题(A账户向B账号汇钱): 1 从 ...

  4. egg.js路由的优雅改造

    引言 在使用express,koa, 或者是egg.js进行node server开发的过程中,我们的路由基本上都是定义在controller层的,框架对于 node 原生路由都会进行一层封装,一版都 ...

  5. js中闭包和对象相关知识点

    学习js时候,读到几篇不错的博客.http://www.cnblogs.com/yexiaochai/p/3802681.html一,作用域 和C.C++.Java 等常见语言不同,JavaScrip ...

  6. vue+egg.js+mysql一个前后端分离留言板项目

    一.前序 我相信每个人前端搬运工和我想法都是一样的,都有一个做全栈的梦,无奈面对众多的后台语言,却不从下手,今天由我来带你们潜入全栈的门槛,注意是门槛.能不能学的会后面的内容全靠坚持了. 我今天主要做 ...

  7. egg.js连接和使用Mongodb

    一.Egg连接Mongodb方法一   Cnpm i egg-momgo-native --save Plugin.js中配置 exports.mongo = { enable: true, pack ...

  8. Node.js 中MongoDB的基本接口操作

    Node.js 中MongoDB的基本接口操作 连接数据库 安装mongodb模块 导入mongodb模块 调用connect方法 文档的增删改查操作 插入文档 方法: db.collection(& ...

  9. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计

    前言 近来公司需要构建一套 EMM(Enterprise Mobility Management)的管理平台,就这种面向企业的应用管理本身需要考虑的需求是十分复杂的,技术层面管理端和服务端构建是架构核 ...

随机推荐

  1. Keepalived 双主虚拟路由配置实例

    Keepalived 双主虚拟路由配置实例 演示前说明: 2台centos7.2 主机:node-00,node-01 VIP1:10.1.38.19预定node-00占有 VIP2:10.1.38. ...

  2. 高级UI晋升之布局ViewGroup(四)

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680本篇文章将从LinearLayout.RelativeLayout.FrameLa ...

  3. [已解决]报错JSONDecodeError

    报错: 解决:

  4. JSON数组对象和JSON字符串的转化,map和JSON对象之间的转化

    这种用法包括前端和后端: 前端: 1. 转化为JSON对象方便操作 var jsonObj = JSON.parse(str); 得到的是一个json数组对象,可以通过 for (var p in j ...

  5. 牛客网多校训练第八场A All one Matrix

    题目链接:https://ac.nowcoder.com/acm/contest/888/A 题意:求出有多少个不被包含的全1子矩阵 解题思路:首先对列做处理,维护每个位置向上1的个数,然后我们从最后 ...

  6. DDOS到底是什么,怎么预防,看看就明白了

    可怕的DDOS怎么预防 分布式拒绝服务(DDoS: distributed denial-of-service)攻击是恶意破坏目标服务器.服务或网络的正常通信量的企图,其方法是用大量Internet通 ...

  7. 十分钟学习 react配套的类型检测库——prop-types的运用

    js 有时在定义变量的类型为number 或string 时并不会报错,所以prop-types 是专门用来检测react ,以前的版本是把它放到react架构里面 ,现在作为一个独立的库搬出来了,跟 ...

  8. akka-stream之异常处理

    背景介绍 在项目中使用了akk-stream的source.queue功能,如下: Pair<SourceQueueWithComplete<Integer>, Source< ...

  9. 访问nginx时验证密码

    只允许1.2.3.4这个IP访问我们的站点,拒绝所有其他IP的访问. server { listen 80; server_name www.example.com; satisfy any; all ...

  10. ant design 两个tabs如何同时切换

    假设界面上有两个地方用到了同一个tabs,但是切换其中一个tabs,另一个tabs并不会同时切换,因为只是在其中一个tabs上调用了onChange,所以需要用到activeKey动态地设置tabs的 ...