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‘)//];

原文:https://www.cnblogs.com/wzgj/p/8866874.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值