数据库访问
下面以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