-
數據庫訪問
下面以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 }); 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') //];