Node開發(fā)過程中一些工具:
- sequelizejs: 基于promise的一個關系數(shù)據(jù)庫ORM
- squel.js: 基于Javascript的SQL查詢構(gòu)建器
- node-only: return whitelisted properties of an object
- wga: a generator, async/await wrapper
- lodash: 提供很多干凈起便,高性能的實用方法萄凤,減少LOC薯嗤,改善應用程序邏輯清晰
- jsonwebtoken: token處理
- pinyin: 輕量級的Node拼音庫,支持中文者春,拼音雙向轉(zhuǎn)換及多種轉(zhuǎn)化方式
- request-promise: 將request訪問第三方/爬蟲 轉(zhuǎn)換成promise方式
- es6-promisify: Convents callback-based functions to Promise-based functions.
- co: Generator based control flow goodness for nodejs and the browser,using promises,letting you write non-blocking code in a nice-ish way.將generator函數(shù)轉(zhuǎn)換成primise對象,使用.then的形式。
- thinkify: 配合co進行使用
- fluent-ffmpeg:進行視頻轉(zhuǎn)換蚕甥,獲取視頻縮略圖
- aws-sdk: 亞馬遜云存儲服務
- multer: nodejs中間件蝌以,上傳文件
- apidoc: 生成API文檔
- grunt: 自動化構(gòu)建工具
- glup: 基于流的自動化構(gòu)建工具
- webpack: 自動化構(gòu)建工具
- node-tesseract: 圖像處理工具炕舵,可以進行圖像識別(驗證碼識別)
- forever: node進程守護者
- images: Node.js 輕量級跨平臺圖像編解碼庫(加水印等)
在我們接下來的實例中將回歸采用關系型數(shù)據(jù)庫Mysql, 在這里我選擇sequelize作為我們的ORM。
安裝: cnpm install sequelize --save-dev
使用: 先直接上代碼跟畅,然后再進行解析
"use strict";
import express from "express";
import Sequelize from 'sequelize';
import co from 'co';
import wga from 'wga';
const app = express();
// 配置 連接數(shù)據(jù)庫
let sequelize = new Sequelize(
'test',
'root',
'',
{
'dialect':'mysql',
'host':'localhost',
'port':3306
}
);
//定義model 映射數(shù)據(jù)表
let User = sequelize.define('student',{
name:{type: Sequelize.STRING},//數(shù)據(jù)類型
age:{type: Sequelize.INTEGER}
});
// 將Model 同步到數(shù)據(jù)庫
co(function* (){
yield User.sync({force: true});
console.log('Database prepared already');
}).catch( err => console.log(err) );
app.get('/',(req, res, next) => {
res.send("hello baby");
next();
});
app.get('/students', wga(function* (req, res) {
let stds = yield User.findAll();
res.json(stds);
}))
app.use((req, res, next) => {
let err = new Error('Not Found');
err.status = 404;
next(err);
});
let server = app.listen(8081,() => {
let host = server.address().address;
let port = server.address().port;
console.log("服務啟動成功咽筋,訪問地址為 http://%s:%s",host,port);
});
首先通過new Sequelize進行配置連接我們的數(shù)據(jù)庫;
- test: 指的是我們要連接的數(shù)據(jù)庫
- root: 用戶名徊件,接下里的一個參數(shù)為密碼奸攻,我這里的密碼為空
- dialect: 指的是我們使用的數(shù)據(jù)庫類型,這里我使用的是mysql數(shù)據(jù)庫
- host 和 port 就不用多說了
接下來就是創(chuàng)建Model(對應的是數(shù)據(jù)庫中的表)虱痕,然后將Model同步到數(shù)據(jù)庫中睹耐,這樣就可以進行數(shù)據(jù)庫的操作了。
源碼參見:https://github.com/huleile/express-sequelize-sample
引自: 昭熙小樂的博客