日韩av片子_国产自在自线午夜精品视频在_使劲快高潮了国语对白在线_久久免费毛片大全_激情丁香综合_欧美成人精品欧美一级乱黄码

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 數據庫 > 使用JavaScript查詢關系數據庫5種方法

使用JavaScript查詢關系數據庫5種方法

2020-07-27 16:54:40 | 來源:中培企業IT培訓網

如果要開發Web應用程序,幾乎可以肯定的是,您將不斷與數據庫進行交互。在本文中,我們將詳細介紹5種使用JavaScript與數據庫進行交互的方法,我們將討論每種方法的優缺點。我們將從最低級別的選擇(SQL命令)開始,然后過渡到更高級別的抽象。為JavaScript應用程序選擇正確的數據庫庫會對代碼的可維護性,可伸縮性和性能產生重大影響,因此值得花一些時間來確定您的選擇。

  我們的樣品申請

我們將使用在Heroku上托管的簡單Express應用程序作為示例。

  先決條件

要運行示例應用程序,您的計算機上需要以下軟件:

· 類似于unix的終端環境(Mac OSX和Linux很好。如果使用Windows,則需要Windows子系統用于Linux)。

· git(和github帳戶)。

· npm(版本6或更高版本)。

· Heroku 命令行工具。

如果您還沒有Heroku帳戶,則需要注冊一個免費帳戶。如果您不想注冊Heroku,也可以針對本地Postgres實例在本地運行該應用程序。如果您對此感到滿意,那么應該很容易地看到需要進行哪些更改,而不是將它們部署到Heroku。

安裝完以上所有內容后,運行heroku login在終端中,您就可以開始了。

生成和部署Hello World應用程序,首先,我們將設置以下內容:

· 一個簡單的Express應用程序,僅提供“ Hello,World”網頁。

· 一個Postgres的數據庫。

· 兩個表,分別代表“用戶”和“評論”(一個用戶有很多評論)。

· 一些樣本數據(在這種情況下,是通過mockaroo.com生成的)。

我已經創建了一個示例應用程序,它將為您進行所有設置(前提是您已運行)heroku login正如剛才提到的。

這將需要幾分鐘才能完成。在等待時,您可以查看makefile以查看相關命令,這些命令將執行以下操作:

· 創建一個新的Heroku應用程序。

· 添加一個Postgres數據庫實例。

· 將應用程序部署到Heroku。在Heroku上運行命令以設置數據庫表并導入CSV示例數據。

· 在新的瀏覽器窗口中打開Heroku應用程序的URL。

在此過程結束時,您應該在網頁上看到“ Hello,World”。

  使用SQL提取數據

我們都準備好了,我們創建了一個包含兩個表和一些示例數據的數據庫。但是我們還沒有做任何事情。下一步是使我們的Web應用程序能夠從數據庫檢索數據。

每當與關系數據庫進行交互時,都可以通過將SQL命令發送到數據庫正在偵聽的網絡套接字來實現。對于我們將在本文中介紹的所有庫,都是如此-在最低級別上,它們都將SQL命令發送到數據庫并檢索返回的所有輸出。

因此,我們要考慮的與數據庫交互的第一種方法就是執行此操作-發送SQL命令。為此,我們將安裝pg JavaScript庫,該庫使我們可以將SQL發送到Postgres數據庫并檢索結果。

要安裝pg庫,請執行以下命令:

npm install pg

這將獲取并安裝該庫,并將其添加到package.json和package-lock.json文件中。讓我們提交這些更改:

git add package.json package-lock.json gitcommit -m "Install the pg library"

要與我們的數據庫對話,我們需要一些細節:

· Postgres機器的主機名正在運行。

· 網絡端口Postgres正在監聽。

· 我們的數據所在的數據庫的名稱。

· 有權訪問該數據的用戶名和密碼。

大多數數據庫庫將使我們建立連接,方法是向該庫提供一個包含所有這些詳細信息的鍵和值的對象,或者將它們全部組合成一個“數據庫URL”,這就是我們要做的。

將數據庫添加到Heroku應用程序時,會自動獲得一個名為DATABASE_URL的環境變量,其中包含連接數據庫所需的所有詳細信息。您可以通過運行以下命令查看DATABASE_URL的值:

heroku config

這將輸出您的應用程序可以使用的所有環境變量。現在應該只有一個,因此您應該在輸出中看到類似以下的內容:

DATABASE_URL:

postgres://clqcouauvejtvw:1b079cad50f3ff9b48948f15a7fa52123bc6795b875348d66886407a266c0f5b@ec2-52-73-247-67.compute-1.amazonaws.com:5432/dfb3aad8c026in

在我們的示例中,這種情況如下所示:

{

"hostname": "ec2-52-73-247-67.compute-1.amazonaws.com",

"port": 5432,

"database": "dfb3aad8c026in",

"username": "clqcouauvejtvw",

"password": "1b079cad50f3ff9b48948f15a7fa52123bc6795b875348d66886407a266c0f5b"

}

您的DATABASE_URL值將有所不同,但結構將相同。

現在我們已經安裝了pg庫,并且知道如何連接到數據庫,讓我們執行第一個與數據庫交互的示例。我們僅獲取用戶列表并將其顯示在我們的網頁上。在index.js文件的頂部,我們將需要pg庫,并創建一個數據庫連接對象。

const { Pool } = require('pg');const conn = new Pool({ connectionString: process.env.DATABASE_URL });

在里面express()塊,我們將更改get行以調用一種方法,該方法顯示數據庫中的用戶列表:

.get('/', (req, res) => listUsers(req, res))

最后,我們將實現listUsers函數:

async function listUsers(req, res) {

try {

const db = await conn.connect()

const result = await db.query('SELECT * FROM users');

const results = { users: (result) ? result.rows : null};

res.render('pages/index', results );

db.release();

} catch (err) {

console.error(err);

res.send("Error " + err);

}

}

這段代碼會一直等到與我們的數據庫建立連接,然后使用查詢功能發送SQL查詢并檢索結果。

現在,由于許多不同的原因,此步驟可能會失敗,因此在代碼中我們進行測試以確保獲得一些數據,如果這樣做,我們將result.rows分配給結果對象的關鍵用戶。接下來,我們將結果傳遞給render函數,然后釋放數據庫連接。

在views / pages / index.ejs中,我們可以訪問結果對象,因此我們可以這樣顯示用戶數據:

  <h1>Users</h1>

  <ul>

  <% users.map((user) => { %>

  <li><%= user.id %> - <%= user.first_name %> <%= user.last_name %></li>

  <% }); %>

  </ul>

您可以在此處查看具有這些更改的代碼first_name和last_name是我們數據庫的用戶表中兩列的名稱。

讓我們部署這些更改,以便可以在Heroku應用程序中查看數據:

git add index.js views/pages/index.ejs

git commit -m "Display a list of users"

git push heroku master

部署將需要一兩分鐘。該命令執行完畢后,重新加載瀏覽器,您應該在網頁上看到用戶列表。

  MySQL示例

上面的示例適用于Postgres,但是其他常見關系數據庫的代碼將相似。例如,如果您使用的是MySQL:

· 代替npm install pg用npm install mysql2 (使用mysql2,而不是mysql-mysql2更快,并且支持async / await)

· 在index.js中,您將需要這樣的mysql:

const mysql = require('mysql2/promise');

· listUsers函數如下所示:

async function listUsers(req, res) {

try {

const conn = await mysql.createConnection(process.env.DATABASE_URL);

const [rows, fields] = await conn.execute('SELECT * FROM users');

const results = { 'users': rows };

res.render('pages/index', results );

await conn.end();

} catch (err) {

console.error(err);

res.send("Error " + err);

}

}

views / pages / index.ejs保持不變。您可以在此處查看帶有這些更改的示例項目。

我們在這里已經介紹了很多基礎知識,但這對于理解所有數據庫訪問的工作方式都是至關重要的。在下一部分中,我們將看到查詢構建器和對象關系建模庫如何在此基礎上構建,從而使您可以以一種更像使用JavaScript函數和對象的方式來使用代碼中的數據庫數據。想了解更多關于數據庫的信息,請繼續關注中培偉業。

標簽: JavaScript 數據庫
主站蜘蛛池模板: 久久人人爽天天玩人人妻精品 | 国产无遮挡一区二区三区 | 又粗又硬又大免费av | 免费观看裸体美女网站 | 色无码av在线播放 | 国产精品99爱免费视频 | 中国真人一级毛片 | 久久久人成影片一区二区三区观看 | 熟睡被义子侵犯中文字幕 | 国产精品岛国久久久久久久久红粉 | 奇米7777| 久久精品天堂 | 无码专区精品推荐第一页 | av自拍一区 | 亚洲国产精品999久久久婷婷 | 免费一级做a爰片性色毛片 午夜福利毛片 | 人妻丰满熟妇AⅤ无码区 | 91九色欧美 | 高清精品一区二区三区 | 日日夜夜精品视频免费观看 | 激情久久综合网 | 国产在线观看网站精品一区 | 丰满少妇被猛烈进入毛片 | 99久久久国产免费 | 加勒比在线日本 | 男女猛烈啪啪无遮挡激烈下香 | 一级黄色录像影片夫妻性生活影片 | 亚洲欧美经典视频 | 澳门午夜影院 | 日日夜夜尻 | 97caopor国产在线视频 | 久久国产精品久久国产精品 | 草草草影院| 黄污免费网站 | 三级日本 | 蜜臀久久蜜臀av国内精品久久久 | xxx国产在线观看 | 人人妻人人爽人人做夜欢视频 | 欧美在线免费观看视频 | 99久e精品热线免费 日韩午夜免费 | 欧洲尺码日本尺码专线图片 |