nodejs使用eggjs创建项目,接入influxdb完成单表增删改查

这篇具有很好参考价值的文章主要介绍了nodejs使用eggjs创建项目,接入influxdb完成单表增删改查。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

转载请注明出处:

1.Eggjs 特性:

  Eggjs 是 Node.js 服务端应用开发框架,它提供了一套约定,使开发者能够快速搭建、开发和部署应用。以下是 Egg.js 的一些特性和作用:

  1. 框架内置了基于约定的目录结构、约定的扩展机制和一些常用的插件,可以帮助开发者快速搭建应用。
  2. Egg.js 遵循 MVC 的分层架构,使代码更加清晰易于维护。
  3. Egg.js 通过插件机制提供了丰富的功能扩展,例如:数据库访问、模板引擎、Session、身份验证、安全等。
  4. Egg.js 提供了一套完善的开发调试工具,例如:自动重启、自动刷新、自动测试等。
  5. Egg.js 提供了一套完整的部署方案,例如:多进程部署、负载均衡等。

2..使用egg初始化项目

  首先需要保证本地具有nodej的环境,使用egg初始化项目

npm init egg --type=simple

  在执行该命令的中间过程,需要输入 项目名称、项目描述、项目作者以及安全的配置key

nodejs使用eggjs创建项目,接入influxdb完成单表增删改查

   创建之后的项目导入vscode之后如下图所示:

                                                          nodejs使用eggjs创建项目,接入influxdb完成单表增删改查

3.约定规则  

  1 app/router.js:用于配置URL路由规则;
  2 app/controller/** :用于解析用户的输入,处理后返回相应的结果;
  3 app/service/: 用于编写业务逻辑层;
  4 app/public/: 用于放置静态资源;
  5 config/config.{env}.js: 用于编写配置文件;
  6 config/plugin.js 用于配置需要加载的插件;

4.接入InfluxDB配置

  egg提供5种配置文件:

    config.default.js:默认配置文件;
    config.local.js:开发环境下的配置,与默认配置合并,同名则覆盖默认配置;
    config.prod.js:生产环境下的配置,与默认配置合并,同名则覆盖默认配置;
    config.test.js:测试环境下的配置,与默认配置合并,同名则覆盖默认配置;
    config.unittest.js:单元测试环境下的配置,与默认配置合并,同名则覆盖默认配置;

  在 config.default.js 中添加influxdb相关的配置文件,并设置日志级别

config.influxdb = {
    host: 'influx_db_host',
    port: 8086,
    database: 'influx_db',
    username: 'influx_user',
    password: 'influx_pwd'
  }

  config.log = {
    level: 'DEBUG',
    consoleLevel: 'DEBUG',
  }

5. 创建user表

  在app/model/user.js中创建user表:

module.exports = app => {
  const { InfluxDB } = require('influx');
  const { host, port, database, username, password } = app.config.influxdb;
  const influx = new InfluxDB({
    host,
    port,
    database,
    username,
    password,
    schema: [
      {
        measurement: 'user',
        fields: {
          name: InfluxDB.FieldType.STRING,
          age: InfluxDB.FieldType.INTEGER,
        },
        tags: [
          'id'
        ]
      }
    ]
  });
  class User extends app.Service {
    async create(user) {
      return influx.writePoints([
        {
          measurement: 'user',
          tags: { id: user.id },
          fields: {
            name: user.name,
            age: user.age
          }
        }
      ]);
    }
    async find(id) {
      return influx.query(`select * from user where id='${id}'`);
    }
    async update(id, user) {
      return influx.writePoints([
        {
          measurement: 'user',
          tags: { id },
          fields: {
            name: user.name,
            age: user.age
          }
        }
      ]);
    }
    async delete(id) {
      return influx.query(`delete from user where id='${id}'`);
    }
  }
  return User;
};

6. user表的增删改查

  在app/controller/home.js中编写增删改查的接口:

const Controller = require('egg').Controller;
class HomeController extends Controller {
  async create() {
    const { ctx } = this;
    const { id, name, age } = ctx.request.body;
    await ctx.service.user.create({ id, name, age });
    ctx.body = { success: true };
  }
  async find() {
    const { ctx } = this;
    const { id } = ctx.query;
    const result = await ctx.service.user.find(id);
    ctx.body = result;
  }
  async update() {
    const { ctx } = this;
    const { id } = ctx.params;
    const { name, age } = ctx.request.body;
    await ctx.service.user.update(id, { name, age });
    ctx.body = { success: true };
  }
  async delete() {
    const { ctx } = this;
    const { id } = ctx.params;
    await ctx.service.user.delete(id);
    ctx.body = { success: true };
  }
}
module.exports = HomeController;

7.在app/router.js中配置路由

module.exports = app => {
  const { router, controller } = app;
  router.post('/user', controller.home.create);
  router.get('/user', controller.home.find);
  router.put('/user/:id', controller.home.update);
  router.delete('/user/:id', controller.home.delete);
};

8.启动并测试

  启动

  • 开发环境:npm run dev
  • 生产环境:npm start

  停止

npm run stop

nodejs使用eggjs创建项目,接入influxdb完成单表增删改查

  使用curl命令测试接口:

# 创建user
$ curl -X POST -H "Content-type: application/json" -d '{"id": "1", "name": "Alice", "age": 20}' http://localhost:7001/user
# 查找user
$ curl http://localhost:7001/user?id=1
# 更新user
$ curl -X PUT -H "Content-type: application/json" -d '{"name": "Bob", "age": 30}' http://localhost:7001/user/1
# 删除user
$ curl -X DELETE http://localhost:7001/user/1

9.目录结构及所有文件 

egg-influxdb-demo
├── app
│   ├── controller
│   │   └── home.js
│   ├── model
│   │   └── user.js
│   ├── router.js
│   ├── service
│   │   └── user.js
│   └── view
│       └── home.tpl
├── config
│   ├── config.default.js
│   └── plugin.js
├── package.json
└── README.md

 文章来源地址https://www.toymoban.com/news/detail-469513.html

到了这里,关于nodejs使用eggjs创建项目,接入influxdb完成单表增删改查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 创建简单的NODEJS项目

    起因 想简单测试CryptoJS,但是又不想带一个大项目启动,只是想用命令行简单测试下面的test1.js而已 创建一最简化的项目 这样项目就创建好了,然后命令行运行: 组件安装好了,但是运行出错 参考:https://bobbyhadz.com/blog/javascript-syntaxerror-cannot-use-import-statement-outside-module,修

    2024年02月13日
    浏览(35)
  • sitespeedio.io 前端页面监控安装部署接入influxdb 到grafana

    作用: sitespeedio.io 用于监控web页面的可用性,并且是0代码植入。可以监控我们的完全页面加载时间,分析那些接口慢等等 1.docker部署influxdb,部署1.8一下,不然语法有变化后面用不了grafana模板 重启influxdb sitespeed试着往influxdb写入数据 会在sitespeed-result下面生成html文件,可以直

    2024年02月06日
    浏览(35)
  • Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD

    Django 模型使用自带的 ORM。 对象关系映射(Object Relational Mapping,简称 ORM )用于实现面向对象编程语言里不同类型系统的数据之间的转换。 ORM 在业务逻辑层和数据库层之间充当了桥梁的作用。 ORM 是通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化

    2024年02月02日
    浏览(55)
  • Flask 项目怎么配置并创建第一个小项目?附上完成第一个小案例截图

    目录 1. 为什么要学习 flask? 2. flask 是什么? 3. flask 如何使用? 要安装 Flask,可以按照以下步骤进行: 4. 使用流程 4.1. 新建项目 4.1.1. 打开 pycharm,新建项目 4.1.2. 设置目录,并添加环境 4.1.3. 找到之前创建的虚拟环境 4.1.4. 然后点击 OK 4.1.5. 注意,项目目录和环境目录不一样

    2024年01月16日
    浏览(47)
  • 创建Firebase项目并接入Firebase推送: Firebase Cloud Messaging (FCM)

    Firebase Cloud Messaging (FCM) 是一种跨平台消息传递解决方案,可供您可靠地传递消息,而且还是免费的服务。支持 Android,IOS,Web,Flutter,Unity. 消息类型 可以使用 FCM 向客户端发送两种类型的消息: 通知消息,有时被称为“显示消息”。此类消息由 FCM SDK 自动处理。 数据消息,由客

    2024年02月04日
    浏览(36)
  • Rspack 创建 vue2/3 项目接入 antdv(rspack.config.js 配置 less 主题)

    Rspack CLI 官方文档。 rspack.config.js 官方文档。 创建项目(文档中还提供了 Rspack 内置 monorepo 框架 Nx 的创建方式,根据需求进行选择) 创建好项目并运行,目前 Rspack 版本支持的工程模版: 默认创建的 vue 项目为 vue3 : 如果需要其他版本,或其他框架的基础工程,可到官方提

    2024年02月11日
    浏览(54)
  • 【python+wechaty+docker+nodejs】24年从0开始搭建使用python-wechaty接入微信聊天机器人全过程记录

    全网搜索了所有相关文章,由于个人原是java老程序员,对python有点兴趣,正好这个机器人的python资料比较多,因此就着手尝试。 在网上基本没有找到python-wechaty的完整说明的使用手册因此自己写一个记录一下全过程。 真正的从0开始。只有系统。没有其他的情况下,都是全新

    2024年01月24日
    浏览(55)
  • Vue+Nodejs 使用WebSocket创建一个简易聊天室

    使用vue编写前端页面,nodejs处理服务端消息,WebSocket进行实时通信 1.客户端 2. 服务端 使用的是nodejs

    2024年02月16日
    浏览(42)
  • 保姆级教程 从零配置nodejs环境并用命令行创建基于vue3的uniapp项目+Webstorm配置uniapp

    本教程后面部分(用命令行创建基于vue3的uniapp项目+Webstorm配置uniapp)适合习惯使用vscode或Webstorm等(或者说不习惯HBuilder X)的人参考,如果习惯使用HBuilder X,还是建议使用HBuilder X来搭建uniapp项目,会方便很多。 目录 1. 配置node.js 1.1 下载并安装 1.2 配置环境变量 1.3 修改安装

    2024年02月20日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包