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. python不同包之间调用时提示文件模块不存在的问题

    python对于跨包调用函数时,经常会提示模块不存在的问题,主要是python程序执行时,搜索路径导致的,python程序执行的路径依次是: (1)程序根目录(2)环境变量(3)标准库目标(D:\Py ...

  2. 实现简单的PHP接口,以及使用js/jquery ajax技术调用此接口

    主要介绍下如何编写简单的php接口,以及使用js/jquery的ajax技术调用此接口. Php接口文件(check.php): <?php $jsonp_supporter = $_GET[‘ ...

  3. 22-7map

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. FFmpeg Download

    https://ffmpeg.zeranoe.com/builds/

  5. 【磁盘】顺序IO比随机IO快

    假设磁盘每秒可以做100个随机I/O操作,并且可以完成每秒10MB的顺序读取(这大概是消费级磁盘现在能达到的水平).如果每行100字节,随机读每秒可以读100行(相当于每秒10000字节=10KB), ...

  6. TopCoder[SRM587 DIV 1]:TriangleXor(550)

    Problem Statement      You are given an int W. There is a rectangle in the XY-plane with corners at ...

  7. bzoj1004题解

    [题意分析] 给N个元素染色,可以在定置换群的作用下互相转化的染色方案算相同的,问本质不同的染色方案数. [解题思路] 引理:Burnside定理 设集合S=[1,n]∩N,记等价类数为L,给定S上的 ...

  8. 奇思妙想:利用野指针和lower_bound()/upper_bound()函数实现整数二分

    众所周知,c++的STL中提供了三个二分查找函数,binary_search(),lower_bound(),upper_bound(),功能分别是找某值是否在数组中出现,找到数组中第一个大于等于某值 ...

  9. JS中 reduce() 的用法

    过去有很长一段时间,我一直很难理解 reduce() 这个方法的具体用法,平时也很少用到它.事实上,如果你能真正了解它的话,其实在很多地方我们都可以用得上,那么今天我们就来简单聊聊JS中 reduce ...

  10. JDK简介和mac下安装和查看版本命令

    1.什么是JDK? JDK:Java Development Kit,是 Java 语言的软件开发工具包(SDK).没有JDK的话,无法编译Java程序(指java源码.java文件). SE(Jav ...