使用 Express 發送 JSON 回應

如何使用 Node.js 的 Express 函式庫來提供 JSON 資料 當在 Express 上監聽連線時,每個網路呼叫都會呼叫回呼函式並傳入一個 Request 物件實例與一個 Response 物件實例。 範例: app.get('/', (req, res) => res.send('Hello World!')) 在這個例子中,我們使用了 Response.send() 方法,該方法接受任何字串。 你可以使用 Response.json() 方法將 JSON 資料傳送給客戶端,這是一個非常有用的方法。 它接受一個物件或陣列,並在傳送之前將其轉換為 JSON 格式: res.json({ username: 'Flavio' })

使用 MySQL 和 Node 的基礎操作

MySQL 是世界上最受歡迎的關聯式資料庫之一。了解如何在 Node.js 中使用它。 MySQL 是世界上最受歡迎的關聯式資料庫之一。 當然,Node 生態系統中有幾個不同的套件可以讓您與 MySQL 進行互動,存儲數據,檢索數據等等。 我們將使用 mysqljs/mysql,這個套件在 GitHub 上有超過 12,000 顆星並且存在多年。 安裝 Node mysql 套件 用以下指令安裝: npm install mysql 初始化數據庫連接 首先要引入套件: const mysql = require('mysql') 然後創建一個連接: const options = { user: 'the_mysql_user_name', password: 'the_mysql_user_password', database: 'the_mysql_database_name' } const connection = mysql.createConnection(options) 通過調用以下代碼來建立新的連接: connection.connect(err => { if (err) { console.error('An error occurred while connecting to the DB') throw err } }) 連接選項 在上面的例子中,options 對象包含了 3 個選項:...

使用 Node 寫入檔案

如何使用 Node.js 寫入檔案 在 Node.js 中,最簡單的方法是使用 fs.writeFile() API 來寫入檔案。 範例: const fs = require('fs') const content = '一些內容!' fs.writeFile('/Users/flavio/test.txt', content, (err) => { if (err) { console.error(err) return } // 檔案已成功寫入 }) 或者,你可以使用同步版本的 fs.writeFileSync(): const fs = require('fs') const content = '一些內容!' try { const data = fs.writeFileSync('/Users/flavio/test.txt', content) // 檔案已成功寫入 } catch (err) { console.error(err) } 預設情況下,如果該文件已存在,該 API 將替換該文件的內容。 你可以通過指定標誌 (flag) 改變預設行為: fs.writeFile('/Users/flavio/test.txt', content, { flag: 'a+' }, (err) => {}) 你可能會使用的標誌 (flags) 有:...

使用 Node.js、Express 和 MongoDB 构建 REST API

在本教程中,我们将使用 Node.js 和 Express 构建一个 REST API。 该 API 将提供一组 GET 和 POST 端点,以允许获取数据和发送数据。 我们将使用 MongoDB 数据库存储这些数据。 提示:在继续本教程之前,请确保在您的系统上安装了 MongoDB 数据库(或者您可以使用 Cloud MongoDB 数据库,如果您更喜欢这种方式) 我们的任务是创建一个旅行成本计算器应用程序。 想象一下去旅行,你有一个应用程序(可以是渐进式 Web 应用程序,也可以是移动应用程序),你可以在其中添加你的任何费用。汽油、酒店、食物、门票等等。 当旅行结束时,你可以将其归档,并成为历史的一部分-你可以导航并查看过去旅行花费了多少钱。 我们这里不会创建应用程序的前端,只有 API。 现在让我们详细分解这个问题,并将其转化为一系列 API 端点。 端点是我们将调用以进行操作的唯一 URL。 比如,添加一个新的带有其名称的旅行。 在开始时,没有存储的旅行,我们需要添加一个。我想象应用程序会要求用户提供名称,并有一个“创建旅行”按钮。当点击时,应用程序会将名称发送给 /trip 端点,并使用 POST HTTP 方法。 我们有了第一个端点,它将接受一个 name 属性。 POST /trip { name } 另一个端点将列出旅行,它是: GET /trips 默认情况下,它将按照创建日期排序返回旅行。 当用户想要添加新的费用时,应用程序会使用 POST 方法调用 /expense 端点,并提供描述费用的一些参数。 POST /expense { trip, date, amount, category, description } trip 是当前选择的旅行的 ID。...

使用Node.js一次遞增多個文件夾的數字

如何解決一個小型文件夾管理問題 我有一個問題。 我正在創建許多格式為以下的文件夾: 1-yo 2-hey 3-cool 4-hi 5-whatsup 一個數字後面跟著一個破折號和一個字符串。 我創建了40個這樣的文件夾,然後我意識到我必須在中間插入一個文件夾,像這樣: 1-yo 2-hey 3-NEWONE 3-cool 4-hi 5-whatsup 問題是,我必須更改所有的文件夾數字,現在它們應該跟隨3-NEWONE文件夾。 我希望最終的結果是這樣的,所有新條目後面的數字都是遞增的: 1-yo 2-hey 3-NEWONE 4-cool 5-hi 6-whatsup 我手動完成了一次,然後我意識到我將來肯定會重複這個過程,所以我使用Node.js命令行應用程序將其自動化。 我將文件命名為increment.js,並選擇使用命令行參數來設置我想要從哪個數字開始,像這樣: node rename.js 4 獲取數字很簡單,從process.argv中獲取: const args = process.argv.slice(2) const startingNumber = args[0] 如果沒有提供數字,我們將顯示錯誤並結束程序: if (!startingNumber) { console.log('請添加一個數字參數') return } 現在我們有了這個數字,我們可以開始獲取我們需要遞增的文件夾名稱。腳本將位於包含所有子文件夾的同一文件夾中,所以我們可以從./讀取,這表示當前文件夾。 這是我們如何獲取當前文件夾中包含的所有文件和子文件夾的名稱: const fs = require('fs') const folders = fs .readdirSync('./') .map(fileName => { return fileName }) 讓我們過濾一下,以確保我們只獲取文件夾: const fs = require('fs') const isFolder = fileName => { return !...

使用Node.js和Express创建GraphQL服务器

這是一個關於如何使用Node.js和Express創建GraphQL服務器的簡單教程。 首先,創建一個新的Node.js項目,如果您還沒有設置一個的話: npm init --y 這個命令會創建我們使用npm所需的package.json文件。 安裝npm包express,graphql和express-graphql: npm install express graphql express-graphql 創建一個app.js文件,並開始初始化Express服務器: const express = require('express') const app = express() app.listen(3000, () => { console.log('App listening on port 3000') }) 現在我們添加express-graphql庫,它是一個中間件(middleware),我們將它應用於/graphql路由: const express = require('express') const graphqlHTTP = require('express-graphql') const app = express() app.use('/graphql', graphqlHTTP()) app.listen(3000, () => { console.log('App listening on port 3000') }) 我們需要傳遞一個對象,該對象包含了 schema 屬性,該屬性必須包含一個schema定義。 我們首先需要定義一個schema! 創建一個schema.js文件,然後在其中引入graphql庫,使用對象解構語法,我們獲取GraphQLSchema,GraphQLObjectType和GraphQLString這幾個對象: const graphql = require('graphql') const { GraphQLSchema, GraphQLObjectType, GraphQLString } = graphql 然後,我們通過初始化一個新的GraphQLSchema實例,並傳遞一個對象給它,該對象包含一個query屬性。該屬性是一個GraphQLObjectType對象的實例:...

使用Node.js服務一個HTML頁面

了解如何使用Node.js無依賴項目來服務一個 index.html HTML 頁面。 我有一個需求,需要從Node.js服務器中提供一個HTML頁面,以下是實現這一需求的最簡代碼: const http = require('http') const fs = require('fs') const server = http.createServer((req, res) => { res.writeHead(200, { 'content-type': 'text/html' }) fs.createReadStream('index.html').pipe(res) }) server.listen(process.env.PORT || 3000) 不需要任何依賴項。 將此代碼添加到一個 app.js 文件中,然後創建一個 index.html 頁面,運行 node app.js 命令。 請注意,上述代碼不支持提供靜態資源,它僅僅提供 index.html 頁面的服務。

使用Node輸出到命令行

如何使用Node將信息打印到命令行控制台,從基本的console.log到更複雜的場景。 使用console模組進行基本輸出 清除控制台 元素計數 打印堆棧跟踪 計算耗時 stdout和stderr 為輸出添加顏色 創建進度條 使用console模組進行基本輸出 Node提供了console模組,該模組可以提供與命令行交互的各種非常有用的方法。它基本上與在瀏覽器中找到的console對象相同。 最基本和最常用的方法是console.log(),它將將您傳遞給它的字符串打印到控制台。如果您傳遞一個對象,它將將它呈現為字符串。您可以將多個變量傳遞給console.log,例如: const x = 'x' const y = 'y' console.log(x, y) Node將打印兩個值。 您還可以通過傳遞變量和格式化符號來格式化漂亮的短語。例如: console.log('我的 %s 有 %d 歲', '貓', 2) %s 將變量格式化為字符串 %d 或 %i 將變量格式化為整數 %f 將變量格式化為浮點數 %O 用於打印對象表示 示例: console.log('%O', Number) 清除控制台 console.clear()可以清除控制台(行為可能取決於所使用的控制台)。 元素計數 console.count()是一個方便的方法。 看一下下面的代碼: const x = 1 const y = 2 const z = 3 console.count('x的值為' + x + '被檢查了多少次?') console.count('x的值為' + x + '被檢查了多少次?') console....

使用Node進行HTTP POST請求

了解如何使用Node進行HTTP POST請求 在Node中進行HTTP POST請求有很多方法,具體取決於你想使用的抽象級別。 在Node中執行HTTP請求最簡單的方法是使用Axios庫: const axios = require('axios') axios .post('/todos', { todo: '買牛奶', }) .then((res) => { console.log(`statusCode: ${res.statusCode}`) console.log(res) }) .catch((error) => { console.error(error) }) 另一種方法是使用Request庫: const request = require('request') request.post( '/todos', { json: { todo: '買牛奶', }, }, (error, res, body) => { if (error) { console.error(error) return } console.log(`statusCode: ${res.statusCode}`) console.log(body) } ) 到目前為止介紹的2種方法需要使用第三方庫。 使用Node標準模塊也可以進行POST請求,雖然比前面兩種選項更冗長: const https = require('https') const data = JSON.stringify({ todo: '買牛奶', }) const options = { hostname: 'yourwebsite....

使用Node進行HTTP請求

如何使用Node.js進行HTTP請求,包括GET、POST、PUT和DELETE方法。 我使用了HTTP這個術語,但HTTPS應該在所有地方都使用,因此這些示例中使用的是HTTPS而不是HTTP。 表演GET請求 const https = require('https'); const options = { hostname: 'flaviocopes.com', port: 443, path: '/todos', method: 'GET' }; const req = https.request(options, (res) => { console.log(`statusCode: ${res.statusCode}`); res.on('data', (d) => { process.stdout.write(d); }); }); req.on('error', (error) => { console.error(error); }); req.end(); 表演POST請求 const https = require('https'); const data = JSON.stringify({ todo: '買牛奶' }); const options = { hostname: 'flaviocopes.com', port: 443, path: '/todos', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': data....