hapi mysql项目实战路由初始化_Hapi+MySql项目实战数据库操作(四)
数据库访问
下面以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项目实战数据库操作(四)相关推荐
- mysql堡垒机漏洞_堡垒机实例以及数据库操作
堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: i ...
- mysql ddl dql_MySQL的DDL和DML及其DQL数据库操作
数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓库. 3. 数据库的特点: 1. 持久化存储数据的.其实数据库就是一个文件系 ...
- 创建GIT项目,并初始化上传项目代码
需要隔离一个项目的子项目,防止提交时影响项目的其他子项目,所以新建一个Git项目.[其实就是在git上添加一个项目地址,创建一个项目,空的文件件],记录下过程,备忘. 1.在首页,左侧 Project ...
- c mysql 返回字符串长度_C字符串截取、C数据库操作
1.字符串截取 #include#include char* substring(char* ch,int pos,intlength) {//定义字符指针 指向传递进来的ch地址 char* pch ...
- Django项目实践3 - Django模型(字段、数据库操作及模型继承)
http://blog.csdn.net/pipisorry/article/details/45725953 Django数据库字段类型(Field types) AutoField class A ...
- hapi mysql项目实战路由初始化_用hapi.js mysql和nuxt.js(vue ssr)开发仿简书的博客项目...
前言: 预览: 开始: npm i 把mysql配置好 npm run server or npm run dev 实现功能: 用户: 登录.注册.用户资料修改,详情页面,类似于简书的文章数量.总字数 ...
- wdcp查看mysql日志_查看修改服务器中的WDCP数据库操作记录
今天一老客户要使用本地工具(Navicat)操作主机中的MySQL,主机已开放3306端口,IDC后台安全策略也增加了3306,但是还是拒绝连接,出现上面的提示信息.百度了一下,说是主机名要使用&qu ...
- golang mysql封装_使用Golang 封装一个Api 框架 ----- 数据库操作篇(gorm引入)
在models/baseModel 定义了 一个BaseModel对象,在这个对象上定义了 获取数据库连接和 释放数据库连接的方法 type BaseModel struct { dbConnect ...
- MySQL必备知识(快速上手,直接掌握数据库操作)
Mysql知识精化 一.Mysql实用知识量并不多,核心就是增删改查,其他的一切基本都是围绕这这个核心展开,下面的知识包含了Mysql使用的方方面面,请大家放心食用!将以三张表为例展开,表结构如下所示 ...
- 二次开发mysql数据反推_Discuz二次开发之数据库操作
一.discuz数据操作之查: 1.fetch_all DB::fetch_all(sql, $arg = array());//取出符合条件的所有数据 sql为查询语句,$arg为绑定参数 例:$r ...
最新文章
- sql查询每个学生的最高成绩mysql语句
- UA PHYS515A 电磁理论III 静磁学问题1 Maxwell方程与静磁学问题
- Android实现程序之间的跳转
- 像像接入云信,连接真人连接真爱
- Linux shell关系运算
- 自己动手写UI库——引入ExtJs(布局)
- mysql enum_MySQL数据库中关于ENUM类型的详细解释
- PostgreSQL 聚合、分组、排序
- Hibernate之事务处理
- 程序员面试-并发大数据分布式
- XRecyclerView+Retrofit+RXjava+Fresco请求网络数据
- 2.前端开发命名规范
- 金融科技之能量守恒定律
- Appium从环境搭建到测试脚本编写(四)
- 注册mysql确认邮件_如何在MySQL中使用电子邮件ID选择@之前的所有内容?
- mysql锁机制——乐观锁、悲观锁;共享锁、排他锁、行表锁、间隔后码锁、MVCC 与 thinkphp的lock解析
- 用matlab求雅可比迭代法,基于matlab的jacobi(雅可比)迭代法求解线性方程组
- BigDL:分布式开放源码Apache SCAP深度学习库
- 【Spark入门项目】关键词统计
- corn java 可配置_java的cron配置细节
热门文章
- 架构师说低代码:走出半生,归来仍是“毒瘤”!
- ESP32开发学习 LVGL Littlevgl 解码显示JPG图片三种方式JPG_SJPG_C Array
- 解决MySQL报ValueError(“Could not process parameters“)错误
- 看板(Kanban)与Scrum区别
- 机器学习预测时label错位对未来数据做预测
- java mc和java jdk_JDK、JRE、JVM三者间的关系
- 从百亿美元到零估值,硅谷的Theranos或许不止一个
- Android - 一种相似图片搜索算法的实现
- 用PS修改GIF动图循环播放次数
- like查询索引失效问题与解决办法