【Node Hero】5.Node.jsデータベース教程
5529 ワード
本論文の転載は、衆成翻訳者:ネット待ち伏せ紀事リンク:http://www.zcfy.cc/article/1751原文:https://blog.risingstack.com/node-js-database-tutorial/
下記のNode.jsデータベース教程はNode.jsアプリケーションのデータベースをどのように設定するかを示します.そして、その基礎知識を使用するように教えます.
データをグローバル変数に格納します.
上の章で習ったように、ユーザーに静的なページを提供します.着陸ページや個人のブログに適合するかもしれません.しかし、個性的な内容を渡すには、どこかにデータが存在する必要があります.
例を挙げます.ユーザ登録.ユーザーにカスタマイズコンテンツを提供したり、ユーザーが認証した後にのみ利用できるようにしたりすることができます.
ユーザがあなたのアプリケーションを登録したいなら、ルートプロセッサを作成して登録を成功させたいかもしれません.
この方法を使うといくつかの理由で問題が発生します.メモリが高いです. アプリケーションを再起動するたびにメモリがリセットされます. 掃除しないと、スタックがオーバーフローすることがあります. データをファイルに保存します.
あなたの脳裏に現れた次の出来事は、データをファイルに保存することかもしれません.
ユーザーデータをファイルシステムに恒久的に格納すると、前列の問題が回避される.
実際、この方法は次のように見えます.
残念なことに、このようにユーザデータを記憶するのにはいくつかの欠陥が残っている.ユーザーデータを追加することは可能ですが、更新または削除したいです. ファイルに保存する場合、並列アクセスファイルは容易ではない(システムレベルのロックはデータの書き込みを阻止する). アプリケーションを拡張すると、ファイルをサーバ間に分割することはできません. これが実際のデータベースの役割です.
データベースには二つのタイプがあると聞きましたが、SQLとNOSQLです.
SQL
私たちはSQLで始まります.SQLは関係データベースのためのクエリー言語です.使用中の製品によってSQLはいくつかのスタイルがありますが、基本原理は同じです.
データ自体は表に格納されますが、挿入されたブロックごとに表の行として表示されます.Google SheetsまたはMicrosoft Excelのように.
SQLデータベースでは、schemaを定義することができます.これらのschemaは、あなたが入れたいデータの骨格を提供します.データを格納する前に、異なる値の種類を設定しなければなりません.例えば、ユーザデータにテーブルを定義しなければなりません.データベースのユーザ名は文字列タイプで、年齢は整数型です.
NoSQL
一方、NoSQLデータベースはここ10年でかなり流行しています.NoSQLを使うと、schemaを定義する必要がなく、任意のJSONを記憶することができます.これはJavaScriptに便利です.JavaScriptでは対象をJSONに変換するのが簡単です.しかし、NoSQLを使うには、データの整合性が保証されていないので、データベースに何があるか分かりません.
Node.jsとMongoDB
Node.jsに対してよくある誤解をよく聞きます.
「Node.jsはMongoDBしか使えません.一番流行りのNoSQLデータベースです.」
私の経験からすると、これは正しくないです.ほとんどのデータベースにはドライバがあります.NPMにもライブラリがあります.私の見るところでは、彼らはMongoDBと同じように使いやすいです.
Node.jsとPostgreSQL
簡単のために、以下の例でSQLを使用するつもりです.私が選んだのはPostgreSQLです.
PostgreSQLを起動して実行させるには、あなたのコンピュータにインストールしなければなりません.Macなら、homebrewでPostgreSQLをインストールします.また、Linuxなら、あなたが使っているバッグマネージャを使ってインストールします.
さらなる情報はこの優れたガイドを読んでください.最初のデータベースを起動して実行させます.
データベースを使ってツールをブラウズするつもりなら、コマンドラインプログラム
コマンドラインインターフェースが嫌なら、オープンソースのPostgreSQLでグラフィカルインターフェースツールpgAdminを管理できます.
注意してください.SQL自体は言語です.すべての機能を説明することはできません.一番簡単なことだけを話します.もっとSQLに関する知識を知るには、PostgreSQLの基礎知識を説明する授業がたくさんあります.
Node.jsデータベースのインタラクション
まず、使用するデータベースを作成します.このため、端末には以下のコマンドが入力されます.
ユーザー入力でデータベースに挿入すると、大きなセキュリティ問題があります.この方法はSQL注入攻撃を防ぐことができ、このタイプの攻撃は攻撃者が完全に未処理のSQLクエリを利用しようとするものである.ユーザー向けのアプリケーションを作成するには、常にこのような状況を考慮しなければならない.SQLの安全性に関する知識をもっと勉強したいです.Node.jsアプリ安全覚書を確認してください.
次の例を続けます.
Node.jsアプリケーションに提供する任意の複雑なSQLクエリを実行してもいいです.
この技術を使って、データをアプリケーションに永久に保存できます.Node-postgreSQLモジュールチームの勤勉な労働のおかげで、データを記憶するのが容易になりました.
Nodejsでデータベースを使うために必要な基礎知識は全部完成しました.今は自分で何かを作りに行きます.
試してみて、実験して、これは1つの本当のNodeの勇士の最優秀方式と称するためです.実践して次の章を準備して、もし第三者とAPI通信するならば!
もしあなたが本教程に関する問題があれば、またはNode.jsでデータベースを使う問題があれば、できるだけ出してください.
下記のNode.jsデータベース教程はNode.jsアプリケーションのデータベースをどのように設定するかを示します.そして、その基礎知識を使用するように教えます.
データをグローバル変数に格納します.
上の章で習ったように、ユーザーに静的なページを提供します.着陸ページや個人のブログに適合するかもしれません.しかし、個性的な内容を渡すには、どこかにデータが存在する必要があります.
例を挙げます.ユーザ登録.ユーザーにカスタマイズコンテンツを提供したり、ユーザーが認証した後にのみ利用できるようにしたりすることができます.
ユーザがあなたのアプリケーションを登録したいなら、ルートプロセッサを作成して登録を成功させたいかもしれません.
const users = []
app.post('/users', function (req, res) {
//
const user = req.body
users.push({
name: user.name,
age: user.age
})
res.send(' !')
})
このようにして、ユーザーをグローバル変数に格納することができ、このグローバル変数は、アプリケーションライフサイクルのいずれもメモリに保存されます.この方法を使うといくつかの理由で問題が発生します.
あなたの脳裏に現れた次の出来事は、データをファイルに保存することかもしれません.
ユーザーデータをファイルシステムに恒久的に格納すると、前列の問題が回避される.
実際、この方法は次のように見えます.
const fs = require('fs')
app.post('/users', function (req, res) {
const user = req.body
fs.appendToFile('users.txt', JSON.stringify({ name: user.name, age: user.age }), (err) => {
res.send(' !')
})
})
このような方式はユーザーデータを失わないので、サーバーが再起動してもできません.この解決策は経済的にも効果的です.メモリを買うよりメモリを買う方が安いからです.残念なことに、このようにユーザデータを記憶するのにはいくつかの欠陥が残っている.
データベースには二つのタイプがあると聞きましたが、SQLとNOSQLです.
SQL
私たちはSQLで始まります.SQLは関係データベースのためのクエリー言語です.使用中の製品によってSQLはいくつかのスタイルがありますが、基本原理は同じです.
データ自体は表に格納されますが、挿入されたブロックごとに表の行として表示されます.Google SheetsまたはMicrosoft Excelのように.
SQLデータベースでは、schemaを定義することができます.これらのschemaは、あなたが入れたいデータの骨格を提供します.データを格納する前に、異なる値の種類を設定しなければなりません.例えば、ユーザデータにテーブルを定義しなければなりません.データベースのユーザ名は文字列タイプで、年齢は整数型です.
NoSQL
一方、NoSQLデータベースはここ10年でかなり流行しています.NoSQLを使うと、schemaを定義する必要がなく、任意のJSONを記憶することができます.これはJavaScriptに便利です.JavaScriptでは対象をJSONに変換するのが簡単です.しかし、NoSQLを使うには、データの整合性が保証されていないので、データベースに何があるか分かりません.
Node.jsとMongoDB
Node.jsに対してよくある誤解をよく聞きます.
「Node.jsはMongoDBしか使えません.一番流行りのNoSQLデータベースです.」
私の経験からすると、これは正しくないです.ほとんどのデータベースにはドライバがあります.NPMにもライブラリがあります.私の見るところでは、彼らはMongoDBと同じように使いやすいです.
Node.jsとPostgreSQL
簡単のために、以下の例でSQLを使用するつもりです.私が選んだのはPostgreSQLです.
PostgreSQLを起動して実行させるには、あなたのコンピュータにインストールしなければなりません.Macなら、homebrewでPostgreSQLをインストールします.また、Linuxなら、あなたが使っているバッグマネージャを使ってインストールします.
さらなる情報はこの優れたガイドを読んでください.最初のデータベースを起動して実行させます.
データベースを使ってツールをブラウズするつもりなら、コマンドラインプログラム
psql
-PostgreSQLサーバインストールプログラムと一緒に縛られることをおすすめします.ここには小さい速診表がありますが、もしPostgreSQLを使い始めたら、それは遅かれ早かれ役に立ちます.コマンドラインインターフェースが嫌なら、オープンソースのPostgreSQLでグラフィカルインターフェースツールpgAdminを管理できます.
注意してください.SQL自体は言語です.すべての機能を説明することはできません.一番簡単なことだけを話します.もっとSQLに関する知識を知るには、PostgreSQLの基礎知識を説明する授業がたくさんあります.
Node.jsデータベースのインタラクション
まず、使用するデータベースを作成します.このため、端末には以下のコマンドが入力されます.
createdb node_hero
次に、ユーザーテーブルを作成します.CREATE TABLE users(
name VARCHAR(20),
age SMALLINT
);
最後に、コードに戻ります.Node.jsプログラムを通じてデータと対話するコードです.'use strict'
const pg = require('pg')
const conString = 'postgres://username:password@localhost/node_hero' //
pg.connect(conString, function (err, client, done) {
if (err) {
return console.error('error fetching client from pool', err)
}
client.query('SELECT $1::varchar AS my_first_query', ['node hero'], function (err, result) {
done()
if (err) {
return console.error('error happened during query', err)
}
console.log(result.rows[0])
process.exit(0)
})
})
これは簡単なPostgreSQL'hello worldの例です.注意第一のパラメータはSQLコマンド文字列で、第二のパラメータはクエリーに提供されるパラメータ値配列です.ユーザー入力でデータベースに挿入すると、大きなセキュリティ問題があります.この方法はSQL注入攻撃を防ぐことができ、このタイプの攻撃は攻撃者が完全に未処理のSQLクエリを利用しようとするものである.ユーザー向けのアプリケーションを作成するには、常にこのような状況を考慮しなければならない.SQLの安全性に関する知識をもっと勉強したいです.Node.jsアプリ安全覚書を確認してください.
次の例を続けます.
app.post('/users', function (req, res, next) {
const user = req.body
pg.connect(conString, function (err, client, done) {
if (err) {
// express
return next(err)
}
client.query('INSERT INTO users (name, age) VALUES ($1, $2);', [user.name, user.age], function (err, result) {
done() // done pg ,
if (err) {
// express
return next(err)
}
res.send(200)
})
})
})
ロック解除を完了しました.ユーザはデータベースに保存します.:今は彼らを獲得してみます.次のステップは、ユーザがアプリケーションに新しいエンドポイントを追加するために取得します.app.get('/users', function (req, res, next) {
pg.connect(conString, function (err, client, done) {
if (err) {
// express
return next(err)
}
client.query('SELECT name, age FROM users;', [], function (err, result) {
done()
if (err) {
// express
return next(err)
}
res.json(result.rows)
})
})
})
難しくないですよね.Node.jsアプリケーションに提供する任意の複雑なSQLクエリを実行してもいいです.
この技術を使って、データをアプリケーションに永久に保存できます.Node-postgreSQLモジュールチームの勤勉な労働のおかげで、データを記憶するのが容易になりました.
Nodejsでデータベースを使うために必要な基礎知識は全部完成しました.今は自分で何かを作りに行きます.
試してみて、実験して、これは1つの本当のNodeの勇士の最優秀方式と称するためです.実践して次の章を準備して、もし第三者とAPI通信するならば!
もしあなたが本教程に関する問題があれば、またはNode.jsでデータベースを使う問題があれば、できるだけ出してください.