zoukankan      html  css  js  c++  java
  • 在egg.js中使用mongodb

    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

  • 相关阅读:
    android中的逐帧动画
    在android项目中使用FontAwesome字体
    java中Proxy类初探
    SwipeRefreshLayout基本使用
    【uni-app】condition 启动模式配置,仅开发期间生效
    【uni-app】底部tabbar导航栏右上角添加数字标记
    【uni-app】设置导航条(标题、导航条颜色、加载动画等)
    errno的定义
    S3C6410串口平台设备注册流程分析
    内核线程
  • 原文地址:https://www.cnblogs.com/wgl0126/p/11661768.html
Copyright © 2011-2022 走看看