iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
0
Modern Web

三十天全端學習:透過javascript(Onsen UI)、python(tornado)、非關聯式資料庫(mongoDB)完成全端學習,建置web app、mobile app。系列 第 22

三十天全端學習(javascript、python、mongoDB)---第二十二天: python tornado ---實例: 全端連線實戰 III

第二十二天: python tornado ---實例: 全端連線實戰 III

今天帶大家實作day21中 mongoDB 第四小節中以python 實作出 會員查詢、新增、更新、刪除的功能實作


前提概要

day20 帶大家了解測試頁的建立方式與基本的mongoDB資料庫


本文概要

會以思考實作題的方式讓讀者去了解,當然可以使用的程式碼(解答)會放在 github


正文開始

day21提到以python 實作出 會員查詢、新增、更新、刪除的功能


day21提到大約需要四個步驟,如下:
第一步:會員查詢 查詢會員檔中會員是否存在,查詢user_id是否存在,存在才可以進行後續動作,不存在是否進行註冊?
第二步:會員新增 若會員存在 -> 進入第三步,不存在就新增,這邊實現會員新增的功能。
第三步:會員更新 異動檔資料的上傳完成,再將主檔更新儲存。
第四步:會員刪除 直接刪除會員資料。

思考時間: 為何不直接對主檔個人資料更新儲存,而需要另一個異動檔才儲存更新呢?(答案於文末)

小作業:是你要如何設計出程式的架構流程,day21中也出過類似的作業題目

黑修斯的設計思考邏輯如下:(從前端使用者的觀點,每個人不一樣,讀者請以自己的觀點)

情況一:新會員使用 -> 所以必然註冊(新增功能實作)
情況二:舊會員登錄 -> 查詢會員檔會員存在與否(查詢功能實作) -> 確認存在才可以進行異動檔資料的上傳並於異動檔資料上傳完畢,更改主檔設定。

思考時間:產品使用情境的思考,如果是今天要設計一款app產品,是以使用情境思考使用目標對象的使用情境想像。 (參考範例於文末)


上圖,在先前的文章中出現過,而實作的核心流程,就如上圖。

1. 實作:新增功能

參考連結:da13 文章,前面的文章都有介紹使用方法,請複習。
程式碼放在 github -> day22/day22_ex1

執行day22_ex1,cmd視窗如出現如下圖,並顯示當前資料庫的資料,最後顯示出 資料單筆新增成功。

透過 Robo3T觀看mongoDB的狀況,確實資料已經新增了。

2. 實作:查詢功能

程式碼放在 github -> day22/day22_ex2

下列程式碼,多使用了pprint模組,讓資料顯示斷行,如下圖:

下列是部分程式碼,完整程式碼,請到github下載。

#實作:查詢功能
myquery = {}  #要搜尋的資料 空白全部搜尋,填值搜尋特定值。
noquery = {"_id": 0}  #要排除的資料
import pprint
for x in mycol.find(myquery,noquery): #使用for印出全部
  pprint.pprint(x)

小作業:
1.如果不使用pprint.pprint,單純使用print的結果如何呢?
2.排除資料選項清空,得到的資料如何?

小作業2的參考解答:

#實作:查詢功能
myquery = {}  #要搜尋的資料 空白全部搜尋,填值搜尋特定值。
noquery = {}  #要排除的資料
import pprint
for x in mycol.find(myquery): #使用for印出全部
  pprint.pprint(x)

思考時間解答:(不敢說解答正確,只是黑修斯的經驗與見解)

  1. 為何不直接對主檔個人資料更新儲存,而需要另一個異動檔才儲存更新呢?
    兩個思考點:
    1.資料不是單一筆,資料不是即時,資料是不連續的,因此需要有個確認機制,確認資料正確送達,才更新
    2.需要存入主檔的資料,需要經過再處理才能歸檔。(例如黑修斯短期進修的智慧心電儀,放入主檔的資料是處理過的數據,並且有些資料是圖形化的。)
  1. 產品使用情境的思考,如果是今天要設計一款app產品,是以使用情境思考使用目標對象的使用情境想像。
    範例:今天有一位小明,是一個20歲的男大學生,使用習慣是先使用app,覺得好用才會註冊,若是還沒體驗到服務,就需要先註冊,會令人感到厭煩。因此在app的功能與體驗設計上ˋ,因此上述痛點,先讓使用者有限量的使用,等到一定程度需要繼續使用服務就必須要註冊才可以使用....等。(讀者也可以上網參考使用情境)

小結

明天會繼續帶大家 實作JS與python tornado 溝通的parse(指令分析)的設計,剩下部分更新、刪除實作。


上一篇
三十天全端學習(javascript、python、mongoDB)---第二十一天:python tornado ---實例: 全端連線實戰 II
下一篇
三十天全端學習(javascript、python、mongoDB)---第二十三天: python tornado ---實例: 全端連線實戰 IV
系列文
三十天全端學習:透過javascript(Onsen UI)、python(tornado)、非關聯式資料庫(mongoDB)完成全端學習,建置web app、mobile app。30

尚未有邦友留言

立即登入留言