技術筆記-以 nodejs 為後台,以 google sheet 充當資料庫

閱讀時間約 3 分鐘

安裝完成 nodejs 後選用一個工作目錄執行 npm init,npm 會產生一個 package.json 檔案,之後為此專案安裝套件時都會記錄在此,讓專案可以很容易的重建和移植,也可設定 npm start 執行時以哪一個 js 檔當作系統入口。直接開寫了,以下我用 app.js 當作系統入口。

raw-image

前兩行引進兩個外部套件,express 為處理 request 和解析 routes 等 web 應用程式基本且必要的功能,body-parser 則提供將 request 傳入的資料解析成物件的功能,兩者都要透過 npm install 安裝。


sheetRoutes 為自行設計開發的 routes,內容將記在後面,看這 require 的用法真的非常優美。app = express() 意即用 app 當作最外層的整個應用系統物件,app.use() 裡面的參數預設是帶有 (request, response, next) 為參數的函數,所有函數的定位均為 middleware 接受 request,做一些處理並將回應加在 response,再呼叫 next() 傳到下一手,所以 use 可以非常多層。


以上所示第一層將 request 內容轉成物件,第二層處理 CORS 讓此服務可以讓別的網站呼叫,第三層就是處理自訂的 routes,此 routes 是以 sheet 開頭,分別導到不同的軟體元件處理。


接下來是 sheetRoutes.js,它的功能主要是識別 browser 的 url,其中 sheet/*** 後面接的網址對應到個別的 controller 相對單純,處理邏輯主要寫在 controller,可觀察此處的 export 寫法,export 甚麼,require 接到的就是甚麼,讓整個系統很容易的跨檔案分工。

raw-image

再來是 controller,這兒乘載主要的邏輯,其中取得 google sheet 的邏輯再度切開到 sheetService 處理,document 的識別和認證放在這兒,必須在 google cloud platform 建立 service account,在預計存取的 google sheet 設定授權,並了解 document id and sheet id 等細節,網路已有許多人分享了就不再贅述。以下程式為經過摸索了解取回的 rows 物件,拆解其結構取出資料的可行方式。

raw-image


raw-image


先看最後傳回的 json 物件:每一個 row 物件經過 controller 的重組成為井井有條的 key vaue 形式,key 就是每一行的第一列。

raw-image

原始的 google sheet 資料如下,記住要把第一行 freeze,取資料時才可有 key 為依據;顯而易見資料已經完美的轉換形式傳輸出去了。

raw-image


最後看看在背後默默運行的 sheetService,其中引用了第三方貢獻的強大套件 google-spreasheet,我連 google 原始文件都沒 k 過,直接用套件真的是事半功倍。

raw-image


最後我想把專案 deploy 到雲端正式提供服務,不知道會不會像 python 一樣一堆版本衝來衝去,非常擔心!結果令人欣喜,azure 神奇的自動把 https 也搞定了,nodejs 既然這麼友善,我想日後應該會越用越多吧!


raw-image


By Newman Chen 2022/11/29

導覽頁:紐曼的技術筆記-索引 | Newman Home










avatar-img
13會員
98內容數
漫步,悠閒自在的隨意行走!是行為,是態度,也是一種境界。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
newman的沙龍 的其他內容
首先安裝 python,依照 官網 的指示,下載正確的版本並執行就可,重點在以下。 虛擬環境的管理平台許多人使用 anaconda,許多教 python 的課程第一堂就是不管三七二十一先安裝再說,但我用了一陣子之後覺得它實在太笨重了,早有掙脫的想法,欣見原生的 python 已經具有虛擬環境管理模
首先安裝 python,依照 官網 的指示,下載正確的版本並執行就可,重點在以下。 虛擬環境的管理平台許多人使用 anaconda,許多教 python 的課程第一堂就是不管三七二十一先安裝再說,但我用了一陣子之後覺得它實在太笨重了,早有掙脫的想法,欣見原生的 python 已經具有虛擬環境管理模
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
你曾經因為筆記庫太大,找不到資訊,感到困擾嗎? Obsidian紀錄數位筆記很方便,也很容易讓我們成為「過度收集狂」。收集的很多,但沒什麼閱讀,沒什麼思考,沒什麼產出。到頭來時間都花在維護而不是創作了。 這是我這25個月以來使用Obsidian做數位筆記,我犯的3的大錯誤(以及如何重生): 錯誤觀念
Thumbnail
做筆記的初學者,常常只是「描述」他人的想法。 但這樣的筆記方式常常徒勞無功。 從「描述性心態」轉變為「辨明性心態」,這兩種心態的差異恰恰是學會思考的關鍵。 下面是這種心態轉換後,寫出高品質筆記的3個實踐:
Thumbnail
卡片筆記的標題,對應著卡片筆記的類型,與卡片內容的資訊顆粒度。 卡片筆記的標題,也決定了我們的Obsidian筆記庫的生長是否有序。 好的卡片筆記標題,能讓Obsidian的連結功能更加強大,讓我們的知識工作完成得更快更好。 在我製作了7600+份Osidian的數位筆記以後,我總結出最實用的3種卡
Thumbnail
前言 自從有了像 Notion 這樣的數位筆記工具,我們就不再需要手寫筆記。但這也導致了一個大問題: 我直接整段複製貼上到筆記就好了。 我看過很多人的筆記,常常都是一大篇文章直接複製貼上,然後稍微畫個重點而已。以往的手寫筆記為了省時省力,通常會是最簡短最核心的內容,也會是自己思考過所轉化的重點,但數
Thumbnail
自2018~美國開始推動製造業回流美國就已經留下勞動供給緊缺的影子,只是疫情模糊本該聚焦的事件,但就業缺口並未因疫情而消逝反而更加惡化;12/15林啟超於“2023全球投資趨勢論壇”表示過往40年從來沒看過這種景象(勞動供給失衡),而造成這種缺口的主要原因有兩個:1.長新冠導致這些勞動力提前或無法回
Thumbnail
如何讓我們寫下的筆記,發揮出最大的價值?我從 2015 開始使用數位筆記軟體到現在,已經 7 年的時間。這 7 年我對於 "為什麼要寫筆記" 的想法不停地再改變,從「紀錄資訊」逐漸走向「深度思考」。我發現使用筆記軟體的心態需要改變,否則只會囤積愈來愈多的內容、沒有具體產出。
Thumbnail
2位作者、500項知識產品、13位重量級菁英、25幅視覺化資訊圖像,《知識複利》一書用多達15位名人的人生故事帶領讀者參透複利的秘密,他們如何達成今日成就?本書將一一解析,跟著書中無數理論與步驟,一步步達成複利變現、打造個人品牌!
Thumbnail
兩年多前,開始有了重新架構網站的想法,所以把 Blogger 架設的網站,移轉至到了新的平台,當年我也做過了一些優缺點評析,剛好最近又再重新整理網站的所有架構,順便也重新啟動了一次 Hugo 架設網站的循環。
Thumbnail
「離開時,以我喜歡的樣子」書籍封面,也是 樹木希林 2016年為寶島社企業形象廣告與廣告詞;書中大綱以「生、病、老、人、絆、家、物、死」八個章節為主架構,其中收錄了不少 樹木希林 接受媒體訪談時的段落摘要,句句都可說是其人生精華的節錄。
Thumbnail
IG: meltycrys.art 什麼是藝術筆記呢? 原來這外國玩意,和一般的治療活動, 有相同功效。就是art journal,本身可以透過圖案模 片、墨水、壓克力,以及印章、發黃書紙、蝶古巴特的昂貴物料, 製作成表達內心世界的日記。它並不限制,如何畫出任何如 充滿稚氣、或意境優美等,的手法和物
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
你曾經因為筆記庫太大,找不到資訊,感到困擾嗎? Obsidian紀錄數位筆記很方便,也很容易讓我們成為「過度收集狂」。收集的很多,但沒什麼閱讀,沒什麼思考,沒什麼產出。到頭來時間都花在維護而不是創作了。 這是我這25個月以來使用Obsidian做數位筆記,我犯的3的大錯誤(以及如何重生): 錯誤觀念
Thumbnail
做筆記的初學者,常常只是「描述」他人的想法。 但這樣的筆記方式常常徒勞無功。 從「描述性心態」轉變為「辨明性心態」,這兩種心態的差異恰恰是學會思考的關鍵。 下面是這種心態轉換後,寫出高品質筆記的3個實踐:
Thumbnail
卡片筆記的標題,對應著卡片筆記的類型,與卡片內容的資訊顆粒度。 卡片筆記的標題,也決定了我們的Obsidian筆記庫的生長是否有序。 好的卡片筆記標題,能讓Obsidian的連結功能更加強大,讓我們的知識工作完成得更快更好。 在我製作了7600+份Osidian的數位筆記以後,我總結出最實用的3種卡
Thumbnail
前言 自從有了像 Notion 這樣的數位筆記工具,我們就不再需要手寫筆記。但這也導致了一個大問題: 我直接整段複製貼上到筆記就好了。 我看過很多人的筆記,常常都是一大篇文章直接複製貼上,然後稍微畫個重點而已。以往的手寫筆記為了省時省力,通常會是最簡短最核心的內容,也會是自己思考過所轉化的重點,但數
Thumbnail
自2018~美國開始推動製造業回流美國就已經留下勞動供給緊缺的影子,只是疫情模糊本該聚焦的事件,但就業缺口並未因疫情而消逝反而更加惡化;12/15林啟超於“2023全球投資趨勢論壇”表示過往40年從來沒看過這種景象(勞動供給失衡),而造成這種缺口的主要原因有兩個:1.長新冠導致這些勞動力提前或無法回
Thumbnail
如何讓我們寫下的筆記,發揮出最大的價值?我從 2015 開始使用數位筆記軟體到現在,已經 7 年的時間。這 7 年我對於 "為什麼要寫筆記" 的想法不停地再改變,從「紀錄資訊」逐漸走向「深度思考」。我發現使用筆記軟體的心態需要改變,否則只會囤積愈來愈多的內容、沒有具體產出。
Thumbnail
2位作者、500項知識產品、13位重量級菁英、25幅視覺化資訊圖像,《知識複利》一書用多達15位名人的人生故事帶領讀者參透複利的秘密,他們如何達成今日成就?本書將一一解析,跟著書中無數理論與步驟,一步步達成複利變現、打造個人品牌!
Thumbnail
兩年多前,開始有了重新架構網站的想法,所以把 Blogger 架設的網站,移轉至到了新的平台,當年我也做過了一些優缺點評析,剛好最近又再重新整理網站的所有架構,順便也重新啟動了一次 Hugo 架設網站的循環。
Thumbnail
「離開時,以我喜歡的樣子」書籍封面,也是 樹木希林 2016年為寶島社企業形象廣告與廣告詞;書中大綱以「生、病、老、人、絆、家、物、死」八個章節為主架構,其中收錄了不少 樹木希林 接受媒體訪談時的段落摘要,句句都可說是其人生精華的節錄。
Thumbnail
IG: meltycrys.art 什麼是藝術筆記呢? 原來這外國玩意,和一般的治療活動, 有相同功效。就是art journal,本身可以透過圖案模 片、墨水、壓克力,以及印章、發黃書紙、蝶古巴特的昂貴物料, 製作成表達內心世界的日記。它並不限制,如何畫出任何如 充滿稚氣、或意境優美等,的手法和物