转载请注明出处:

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

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

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

  使用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

nodejs使用eggjs创建项目,接入influxdb完成单表增删改查的更多相关文章

  1. magento中Model创建以及该Model对于数据库的增删改查

    本文是按照magento英文文档照做与翻译的. Model层的实现是mvc框架的一个巨大的部分.它代表了你的应用的数据,或者说大多数应用没有数据是无用的.Magento的Model扮演着一个重要的角色 ...

  2. Java Web项目案例之---登录注册和增删改查(jsp+servlet)

    登录注册和增删改查(jsp+servlet) (一)功能介绍 1.用户输入正确的密码进行登录 2.新用户可以进行注册 3.登录后显示学生的信息表 4.可以添加学生 5.可以修改学生已有信息 6.可以删 ...

  3. .net core项目搭建swagger接口实现简单增删改查

    .net core搭建swagger 1,新建立.net core项目(这里不再细说) 2,引入NuGet程序包 3,建立项目之后在Startup类中配置swagger 这里我直接把代码贴出来: 在C ...

  4. share point CSOM 客户端模式 创建表 增删改查

    需要引用:Microsoft.SharePoint.Client ascx: <h4>CSOM所有表名</h4> <table> <tr> <td ...

  5. mysql详解常用命令操作,利用SQL语句创建数据表—增删改查

    关系型数据库的核心内容是 关系 即 二维表 MYSQL的启动和连接show variables; [所有的变量] 1服务端启动 查看服务状态 sudo /etc/init.d/mysql status ...

  6. 商城项目整理(三)JDBC增删改查

    商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: create table TEST.GOODS_TABLE ( gid NUMBER not null ...

  7. Asp.net WebApi 项目示例(增删改查)

    1.WebApi是什么 ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务.ASP.NET Web API 是一种用于在 .NET ...

  8. Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

    一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...

  9. django之创建第8-1个项目-数据库之增删改查/数据库数据显示在html页面

    1.为test.DB数据库预先创建下面数据 1    张三    16    2015-01-02    12    李四    17    2015-01-04    13    王五    14  ...

  10. nodejs+express+mysql 增删改查

    之前,一直使用的是nodejs+thinkjs来完成自己所需的项目需求,而对于nodejs中另外一中应用框架express却了解的少之又少,这两天就简单的了解了一下如何使用express来做一些数据库 ...

随机推荐

  1. Laf v1.0 发布:函数计算只有两种,30s 放弃的和 30s 上线的

    一般情况下,开发一个系统都需要前端和后端,仅靠一个人几乎无法胜任,需要考虑的特性和功能非常多,比如: 需要一个数据库来存放数据: 需要一个文件存储来存放各种文件,比如图片文件: 后端需要提供接口供前端 ...

  2. ArcMap安装OSM路网数据编辑插件ArcGIS Editor for OSM的方法

      本文介绍在ArcGIS下属的ArcMap软件中,ArcGIS Editor for OpenStreetMap这一工具集插件的下载与安装的具体方法.   ArcGIS Editor for Ope ...

  3. vue之混入(mixins)的使用方法

    特点:1.方法和参数在各组件中不共享 2.值为对象的选项,如methods,components等,选项会被合并,键冲突的组件会覆盖混入对象的 混入对象中的方法 3.值为函数的选项,如created, ...

  4. CANN训练:模型推理时数据预处理方法及归一化参数计算

    摘要:在做基于Ascend CL模型推理时,通常使用的有OpenCV.AIPP.DVPP这三种方式,或者是它们的混合方式,本文比较了这三种方式的特点,并以Resnet50的pytorch模型为例,结合 ...

  5. 关于Java基础中的异常处理知识点

    Java中的异常(Exception),史上最全的教程来啦~_smilehappiness的博客-CSDN博客 以及Java:详解Java中的异常(Error与Exception)_王小二(海阔天空) ...

  6. [数据库]Ubuntu Linux/Kylin: 安装MySQL

    1 文由 由于安装环境较为特殊,实在折煞人也.而此环境的网络博客/教程偏少,觉得有必要记录一下. 2 环境 安装主机不支持联网 即 不支持APT/APT-GET等傻瓜式的在线安装方式. 硬件架构: A ...

  7. c/c++快乐算法第二天

    c/c++感受算法乐趣(2) 开始时间2023-04-15 22:26:49 结束时间2023-04-16 00:18:16 前言:首先我们来回忆一下昨天接触了些什么算法题,1.1百钱百鸡问题,1.2 ...

  8. 12-提取css成单独文件

    const { resolve } = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') const M ...

  9. R的基本用法

    R变量的命名格式 必须以字母开头 只能包含字母.数字.下划线和.. 对大小写敏感 不能是保留关键字 数据类型(mode) numeric - (10.5, 55, 787) integer - (1L ...

  10. Python_11 类的方法

    一.查缺补漏 1. 实例方法必须用类实例化对象()来调用,用类来调用时会执行,但是self中不是实例化类地址而是传的字符串 二.类中的方法 1. 实例方法 1. 定义在类里面的普通方法(函数) 2.  ...