jsで簡単に削除変更インタフェースを提供する
5945 ワード
今周の书く実験、简単なバックグラウンドのインタフェースを提供してデータベースに対して添削して调べる必要があって、以前バックグラウンドを书いてphpとjavaだけを使ったことがあって、比较的に容易で、jsで书くのも比较的に速いので、今回jsで简単な添削してインタフェースを调べたいです.
初期化ツールが必要:nodejs 依存:express,mysql,body-parser(これらはnpmのパッケージ) jsを解析するためには、nodejsをダウンロードし、nodejsをダウンロードし、フォルダを作成し、npm initを使用して初期化する必要があります.名前を記入する以外は、フォルダの下にpackage.jsonファイルが1つ増えます.
httpリクエストを受け入れて処理するには、expressというパッケージを導入し、ルートディレクトリの下でこのコマンドを使用する必要があります.
expressというパッケージが導入され、index.jsファイルがルートディレクトリの下に作成されます.
端末を開き、nodejsを使用してindex.jsをコンパイルし、ブラウザを開いてlocalhost:3000を入力するとhello worldが表示されます!を選択します.
これは、3000ポートを傍受し、jsでhttpリクエストを処理できることを示している.
データベースの接続
私はmysqlデータベースを使用しています.データベースの操作を容易にするために、mysqlというパッケージを導入しました.
データベース接続の問題を処理するためにindex.jsのパスの下にdb.jsを作成します.
データベース情報を構成するpoolオブジェクトを取得すると、poolオブジェクトでデータベースを操作することができ、sql文を構成し、クエリー方法とsql文を他のモジュール呼び出しにエクスポートすることができる.
バックグラウンドインタフェースの提供
index.jsでdb.jsをインポートし、httpリクエストとデータベース操作をドッキングします.
また、postとputのbody情報を読み取るには、body-parserというパッケージが必要です.
bodyParserを使用してappを構成します.
このときreq.bodyでリクエストボディを読み取ることができます.完全なコード:
まとめ
言叶はただの道具だという言叶を理解したような気がします.
初期化
// package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
httpリクエストを受け入れて処理するには、expressというパッケージを導入し、ルートディレクトリの下でこのコマンドを使用する必要があります.
$ npm install express
expressというパッケージが導入され、index.jsファイルがルートディレクトリの下に作成されます.
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send('hello world!');
});
app.listen(3000, function() {
console.log('server now listening at 3000 port');
});
端末を開き、nodejsを使用してindex.jsをコンパイルし、ブラウザを開いてlocalhost:3000を入力するとhello worldが表示されます!を選択します.
$ node index.js
server now listening at 3000 port
これは、3000ポートを傍受し、jsでhttpリクエストを処理できることを示している.
データベースの接続
私はmysqlデータベースを使用しています.データベースの操作を容易にするために、mysqlというパッケージを導入しました.
$ npm install mysql
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
+ [email protected]
added 9 packages from 14 contributors and audited 134 packages in 4.145s
found 0 vulnerabilities
データベース接続の問題を処理するためにindex.jsのパスの下にdb.jsを作成します.
//db.js
var mysql = require('mysql');
var pool = mysql.createPool({ //
host: "localhost",
user: "root",
password: "",
database: "c#learn",
port: "3306"
});
var sql = {
insert:'INSERT INTO teacher(name, username, email, sex) VALUES(?,?,?,?)',
update:'update teacher set name=?, username=?, email=?, sex=? where id=?',
delete: 'delete from teacher where id=?',
queryById: 'select * from teacher where id=?',
queryAll: 'select * from teacher'
};
function query(sql, data, callback) {
pool.getConnection(function(err, connection) {
connection.query(sql, data, function(err, rows) {
callback(err, rows);
connection.release(); //
});
});
}
exports.query = query;
exports.sql = sql;
データベース情報を構成するpoolオブジェクトを取得すると、poolオブジェクトでデータベースを操作することができ、sql文を構成し、クエリー方法とsql文を他のモジュール呼び出しにエクスポートすることができる.
バックグラウンドインタフェースの提供
index.jsでdb.jsをインポートし、httpリクエストとデータベース操作をドッキングします.
var express = require('express');
var app = express();
var db = require('./db.js');
app.get('/', function(req, res) {
res.header("Access-Control-Allow-Origin", "*");
db.query(db.sql.queryAll, [], function(err, rows) {
res.send(JSON.stringify(rows));
});
});
localhost:3000 teacher 。
app.listen(3000, function() {
console.log('server now listening at 3000 port');
});
また、postとputのbody情報を読み取るには、body-parserというパッケージが必要です.
$ npm install body-parser
bodyParserを使用してappを構成します.
//index.js
var express = require('express');
var db = require('./db.js');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
このときreq.bodyでリクエストボディを読み取ることができます.完全なコード:
var express = require('express');
var db = require('./db.js');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.get('/', function(req, res) {
res.header("Access-Control-Allow-Origin", "*");
db.query(db.sql.queryAll, [], function(err, rows) {
console.log('err', err, 'rows', rows);
res.send(JSON.stringify(rows));
});
});
app.get('/:id', function(req, res) {
res.header("Access-Control-Allow-Origin", "*");
db.query(db.sql.queryById, [req.params.id], function(err, rows) {
res.send(JSON.stringify(rows));
});
});
app.post('', function(req, res) {
res.header("Access-Control-Allow-Origin", "*");
console.log(req.body.name);
var teacher = req.body;
db.query(db.sql.insert, [teacher.name, teacher.username, teacher.email, teacher.sex], function(err, rows) {
if (err) {
res.status(500);
res.send('insert error');
} else {
res.status(200);
res.send('insert success');
}
});
});
app.put('/:id', function(req, res) {
res.header("Access-Control-Allow-Origin", "*");
var teacher = req.body;
var array = [teacher.name, teacher.username, teacher.email, teacher.sex, req.params.id];
db.query(db.sql.update, array, function(err, rows) {
if (err) {
res.status(500);
res.send('update error');
} else {
res.status(200);
res.send('update success');
}
});
});
app.delete('/:id', function(req, res) {
res.header("Access-Control-Allow-Origin", "*");
db.query(db.sql.delete, [req.params.id], function(err, rows) {
if (err) {
res.status(500);
res.send('delete error');
} else {
res.status(200);
res.send('delete success');
}
});
});
app.listen(3000, function() {
console.log('server now listening at 3000 port');
});
まとめ
言叶はただの道具だという言叶を理解したような気がします.