数据库访问

下面以Node的ORM框架Sequelize来操作数据库,Mysql为例。

配置数据库连接信息config/db_config.js:

1 //db_config.js

2 module.exports ={3 database: 'h_api',//库名

4 username: 'root',//用户名

5 password: '123456',//密码

6 host: 'localhost',//数据库地址

7 dialect: 'mysql'//数据库类型

8 }

定义用户模型文件modes/user.js,表映射

//user.js

module.exports = function(sequelize, DataTypes) {var User = sequelize.define("user", {

id:{

type: DataTypes.INTEGER,

primaryKey:true,

allowNull:false,

autoIncrement:true,

},

name:DataTypes.STRING,

sex:DataTypes.BIGINT,

age:DataTypes.INTEGER,

},{

freezeTableName:true, //Model 对应的表名将与model名相同

timestamps: false});returnUser;

};

创建一个sequelize对象实例,连接数据库models/index.js新增代码如下:

//index.js

const Fs = require("fs");

const Path= require("path");

const Sequelize= require("sequelize");

const Config= require('../config/db_config');

let db={};//创建一个sequelize对象实例,连接数据库

let sequelize = newSequelize(Config.database, Config.username, Config.password, {

host: Config.host,

dialect: Config.dialect,

pool: {

max:5,

min:0,

idle:30000}

});

Fs.readdirSync(__dirname).filter(function(file) {return (file.indexOf(".") !== 0) && (file !== "index.js");

}).forEach(function(file) {var model = sequelize["import"](Path.join(__dirname, file));

db[model.name]=model;

});

db.sequelize=sequelize;

module.exports= db;

配置server.js,代码如下:

//server.js

const models=require('./models');//Connect database

var initDb = function(){var sequelize =models.sequelize;//Determine if the database connection is successful

sequelize.sync({force: false}).then(function() {

console.log("connection database successed");

}).catch(function(err){

console.log("connection failed due to error: %s", err);

});

};

initDb();

配置数据库完毕后,在路由handler中使用这个实例

routes文件夹下新建login.js,代码如下:

//login.js

const Joi = require('joi');

const controllers= require('../controllers');

let login={

method:'get',

path:'/login',

handler: controllers.user.login

};

module.exports= login;

controllers文件夹新建index.js,遍历指定目录,require()每个文件,并返回一个包含这些模块嵌套的hash结构,代码如下

//index.js

const requireDirectory = require('require-directory');

module.exports= requireDirectory(module);

controllers文件夹新建user.js,数据库操作

//user.js

let Models = require('../models')

module.exports={

login:function(request, reply) {returnModels.user.findAll({

where: {

name: request.query.name

}

}).then(function(result) {

let reponseMess={};if (result !== null) {

reponseMess={

code:100,

message:'success',

data: result

}

}else{

reponseMess={

code:-100,

message:'fail',

data:''}

}returnreponseMess;

});

}

};

老规矩,配置路由

输入地址:http://localhost:8090/login?name=1, 数据库自己新增一条name=1的记录

输出:json

//module.exports = [

//require(__dirname + '/hello.js'),

//require(__dirname + '/staticfile.js'),

require(__dirname + '/login.js')//];

hapi mysql项目实战路由初始化_Hapi+MySql项目实战数据库操作(四)相关推荐

  1. mysql堡垒机漏洞_堡垒机实例以及数据库操作

    堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: i ...

  2. mysql ddl dql_MySQL的DDL和DML及其DQL数据库操作

    数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓库. 3. 数据库的特点: 1. 持久化存储数据的.其实数据库就是一个文件系 ...

  3. 创建GIT项目,并初始化上传项目代码

    需要隔离一个项目的子项目,防止提交时影响项目的其他子项目,所以新建一个Git项目.[其实就是在git上添加一个项目地址,创建一个项目,空的文件件],记录下过程,备忘. 1.在首页,左侧 Project ...

  4. c mysql 返回字符串长度_C字符串截取、C数据库操作

    1.字符串截取 #include#include char* substring(char* ch,int pos,intlength) {//定义字符指针 指向传递进来的ch地址 char* pch ...

  5. Django项目实践3 - Django模型(字段、数据库操作及模型继承)

    http://blog.csdn.net/pipisorry/article/details/45725953 Django数据库字段类型(Field types) AutoField class A ...

  6. hapi mysql项目实战路由初始化_用hapi.js mysql和nuxt.js(vue ssr)开发仿简书的博客项目...

    前言: 预览: 开始: npm i 把mysql配置好 npm run server or npm run dev 实现功能: 用户: 登录.注册.用户资料修改,详情页面,类似于简书的文章数量.总字数 ...

  7. wdcp查看mysql日志_查看修改服务器中的WDCP数据库操作记录

    今天一老客户要使用本地工具(Navicat)操作主机中的MySQL,主机已开放3306端口,IDC后台安全策略也增加了3306,但是还是拒绝连接,出现上面的提示信息.百度了一下,说是主机名要使用&qu ...

  8. golang mysql封装_使用Golang 封装一个Api 框架 ----- 数据库操作篇(gorm引入)

    在models/baseModel 定义了 一个BaseModel对象,在这个对象上定义了 获取数据库连接和 释放数据库连接的方法 type BaseModel struct { dbConnect ...

  9. MySQL必备知识(快速上手,直接掌握数据库操作)

    Mysql知识精化 一.Mysql实用知识量并不多,核心就是增删改查,其他的一切基本都是围绕这这个核心展开,下面的知识包含了Mysql使用的方方面面,请大家放心食用!将以三张表为例展开,表结构如下所示 ...

  10. 二次开发mysql数据反推_Discuz二次开发之数据库操作

    一.discuz数据操作之查: 1.fetch_all DB::fetch_all(sql, $arg = array());//取出符合条件的所有数据 sql为查询语句,$arg为绑定参数 例:$r ...

最新文章

  1. sql查询每个学生的最高成绩mysql语句
  2. UA PHYS515A 电磁理论III 静磁学问题1 Maxwell方程与静磁学问题
  3. Android实现程序之间的跳转
  4. 像像接入云信,连接真人连接真爱
  5. Linux shell关系运算
  6. 自己动手写UI库——引入ExtJs(布局)
  7. mysql enum_MySQL数据库中关于ENUM类型的详细解释
  8. PostgreSQL 聚合、分组、排序
  9. Hibernate之事务处理
  10. 程序员面试-并发大数据分布式
  11. XRecyclerView+Retrofit+RXjava+Fresco请求网络数据
  12. 2.前端开发命名规范
  13. 金融科技之能量守恒定律
  14. Appium从环境搭建到测试脚本编写(四)
  15. 注册mysql确认邮件_如何在MySQL中使用电子邮件ID选择@之前的所有内容?
  16. mysql锁机制——乐观锁、悲观锁;共享锁、排他锁、行表锁、间隔后码锁、MVCC 与 thinkphp的lock解析
  17. 用matlab求雅可比迭代法,基于matlab的jacobi(雅可比)迭代法求解线性方程组
  18. BigDL:分布式开放源码Apache SCAP深度学习库
  19. 【Spark入门项目】关键词统计
  20. corn java 可配置_java的cron配置细节

热门文章

  1. 架构师说低代码:走出半生,归来仍是“毒瘤”!
  2. ESP32开发学习 LVGL Littlevgl 解码显示JPG图片三种方式JPG_SJPG_C Array
  3. 解决MySQL报ValueError(“Could not process parameters“)错误
  4. 看板(Kanban)与Scrum区别
  5. 机器学习预测时label错位对未来数据做预测
  6. java mc和java jdk_JDK、JRE、JVM三者间的关系
  7. 从百亿美元到零估值,硅谷的Theranos或许不止一个
  8. Android - 一种相似图片搜索算法的实现
  9. 用PS修改GIF动图循环播放次数
  10. like查询索引失效问题与解决办法