• 数据库访问

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

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

 //db_config.js
module.exports = {
database: 'h_api',//库名
username: 'root',//用户名
password: '123456',//密码
host: 'localhost',//数据库地址
dialect: 'mysql'//数据库类型
}

  定义用户模型文件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
}); return User;
};

  创建一个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 = new Sequelize(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) {
return Models.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: ''
}
}
return reponseMess;
});
}
};

  老规矩,配置路由

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

  输出:json

//module.exports = [
//require(__dirname + '/hello.js'),
//require(__dirname + '/staticfile.js'),
require(__dirname + '/login.js')
//];

最新文章

  1. B样条基函数(cubic spline basis)
  2. LINQ、Lambda 的转换
  3. Python - 001 - 类与实例间属性的理解
  4. Web前端性能优化教程06:减少DNS查找、避免重定向
  5. C#异常类相关总结
  6. javascript作用域(Scope),简述上下文(context)和作用域的定义
  7. Swift学习笔记六
  8. JavaScript学习笔记(12)——JavaScript内置对象
  9. rel=nofollow 是什么意思
  10. TextView 为部分文字添加下划线,并实现单击事件
  11. C#学习日志 day 6 ------ 常用正则表达式例举
  12. [js高手之路] es6系列教程 - 对象功能扩展详解
  13. 无废话XML--XML约束(DTD)
  14. rabbitmq简单收发服务搭建
  15. cordova的常用命令
  16. TV TimeShift和PVR的区别
  17. 1.7 All components require plug-in?
  18. Linux系统安装IonCube的方法详解教程
  19. 快速实现抖音的分享&登录(android)
  20. 鱼眼投影方式(Fisheye projection)的软件实现

热门文章

  1. FJUT-1370 记录一次解题过程
  2. WIN10升级后输入法无法输入中文
  3. Openstack之七:实现基于桥接的内外网络
  4. c++ 快读快输模板
  5. 曹工说Spring Boot源码(12)-- Spring解析xml文件,到底从中得到了什么(context:component-scan完整解析)
  6. (树形DP入门题)Anniversary party(没有上司的舞会) HDU - 1520
  7. [bzoj2038] [洛谷P1494] [2009国家集训队] 小Z的袜子(hose)
  8. 废旧手机改造之给你的手机安装win10系统
  9. Kdenlive-简单的操作
  10. JS DOM中Ajax的使用