Code Prettify

Thursday, July 3, 2014

一些關於 node.js 的分享

之前在用node.js寫game server
每當有新的model(資料格式)
也需要寫一個class去封裝(encapsulation)

例如寫完player這款model後
需要添加player的itemBag,用作儲存player的所有物品

這些model的功能大多都包括 定義 / 讀取 / 寫入 資料庫
有不少的重複性

為了提高效率
於是設計了一套格式,方便加入新的model


這套格式使用了以下插件
  • node-cache
    • 用作暫時儲存資料到記憶體,避免頻繁的資料庫讀/寫
  • knex
    • 用作簡化生成sql statement
  • node-mysql
    • 用作連接mysql 資料庫


格式結構


scheme.js 定義所有資料格式
schemeMgr.js 使用node-cache儲存指定scheme的實體資料
schemeModel.js scheme的model實體
實作了insert、update、load單一model的功能
schemeListModel.js scheme list的model實體
實作了insert、update、load多於一款model的功能(使用一個SQL 指令)

格式例子

Scheme Model

  player : {
    param : {
      id : 0,
      name : 'defaultName',
      lv : 1,
      exp : 0,
      coin : 0,
      gold : 0
    },
    cache : {
     stdTTL : 300,
     checkPeriod : 300,
     saveIfExpired : true
},
    db : {
     tableName : 'player',
     onCreateTable : function(table) {
      table.increments('id');
      table.string('name');
      table.integer('lv');
      table.integer('exp');
      table.integer('coin');
      table.integer('gold');
     }
    },
  },

param就是model的模版
產生Scheme Model時會整個複製過去
因為javascript 是weak typing的關係
怎樣定義結構也都可以

 cache是node-cache使用的參數
stdTTL(standard time to live),即物件的在記憶體內的生存時間
checkPeriod是node-cache每隔多久去檢查物件的生存時間
saveIfExpired若是true,在過期的時候會update到資料庫

我作過unit test,如物件過了生存時間但未被檢查
若嘗試從node-cache提取物件 會強制檢查一次
所以不會拿到過期的物件 

db內就是跟資料庫有關的
onCreateTable是knex開設新table時的callback function

Scheme List Model

  itemBag : {
   param : {
    id : 0,
    playerID : 0,
    itemID : 0,
    count : 0
   },
   cache : {
     stdTTL : 300,
     checkPeriod : 300,
     saveIfExpired : true
   },
    db : {
     tableName : 'player',
     onCreateTable : function(table) {
      table.increments('id');
      table.string('playerID');
      table.integer('itemID');
      table.integer('count');
     }
    },
    keyList : {
     playerID : 0
    }
  }
};

Scheme List Model 只比 Scheme Model多了一個 keyList
是在讀取/寫入 資料庫時使用的key


使用這個格式,只需要幾行就可以新增一款model
省了很多 read/write 資料庫的code
更省了很多很多unit test 的code
既方便又快捷 :)


17 comments:

  1. Replies
    1. Update Terbaru Live Score Dan Berita Terbaru Dunia Sepak bola Hanya Di BERITA SEPAKBOLA

      Cerita Seks Dewasa Hot Bokep Mesum Hanya Di Cerita Seks Kisah Nyata Terbaru 2018

      Delete
  2. 裸聊直播間-真愛旅舍視頻聊天室-真人秀視頻聊天室-同城午夜免費交友網站
    裸聊直播間-真愛旅舍視頻聊天室-真人秀視頻聊天室-同城午夜免費交友網站
    真人裸聊秀場-午夜聊天室真人秀場-真愛旅舍視頻聊天室
    真人裸聊秀場-午夜聊天室真人秀場-真愛旅舍視頻聊天室
    台灣一對一視頻聊天室-午夜真人秀視頻聊天室-台灣免費視訊聊天室
    台灣一對一視頻聊天室-午夜真人秀視頻聊天室-台灣免費視訊聊天室
    台灣一對一視頻聊天室-寂寞交友富婆聊天室-台灣免費視訊聊天室
    台灣一對一視頻聊天室-寂寞交友富婆聊天室-台灣免費視訊聊天室
    台灣一對一視頻聊天室-台灣免費視訊聊天室-同城午夜一夜情交友網站
    台灣一對一視頻聊天室-台灣免費視訊聊天室-同城午夜一夜情交友網站
    台灣甜心真人裸聊-免費裸聊聊天室-聊天室真人秀視頻-在線聊天室
    台灣甜心真人裸聊-免費裸聊聊天室-聊天室真人秀視頻-在線聊天室
    台灣甜心真人裸聊-台灣辣妹視訊聊天室-免費午夜真人秀視頻聊天室
    台灣甜心真人裸聊-台灣辣妹視訊聊天室-免費午夜真人秀視頻聊天室
    免費同城聊天室-色情真人秀場聊天室-同城寂寞交友網-聊天室你懂的
    免費同城聊天室-色情真人秀場聊天室-同城寂寞交友網-聊天室你懂的
    台灣免費視訊聊天室-網愛聊天室-台灣ut聊天室-在線聊天室
    台灣免費視訊聊天室-網愛聊天室-台灣ut聊天室-在線聊天室
    真愛旅舍視頻聊天室
    真愛旅舍視頻聊天室
    真愛旅舍視頻ut聊天室
    真愛旅舍視頻ut聊天室
    真愛旅舍視頻聊天室-夫妻真人秀視頻聊天室-午夜聊天室
    真愛旅舍視頻聊天室-夫妻真人秀視頻聊天室-午夜聊天室
    台灣一對一視頻聊天室-台灣免費視訊聊天室-同城午夜一夜情交友網站
    台灣一對一視頻聊天室-台灣免費視訊聊天室-同城午夜一夜情交友網站
    台灣免費視訊聊天室-台灣辣妹視訊聊天室-聊天室你懂的
    台灣免費視訊聊天室-台灣辣妹視訊聊天室-聊天室你懂的
    台灣免費視訊聊天室-台灣色情視訊聊天-免費午夜聊天室
    台灣免費視訊聊天室-台灣色情視訊聊天-免費午夜聊天室

    ReplyDelete
    Replies
    1. Update Terbaru Live Score Dan Berita Terbaru Dunia Sepak bola Hanya Di BERITA SEPAKBOLA

      Cerita Seks Dewasa Hot Bokep Mesum Hanya Di Cerita Seks Kisah Nyata Terbaru 2018

      Delete
  3. Replies
    1. Update Terbaru Live Score Dan Berita Terbaru Dunia Sepak bola Hanya Di BERITA SEPAKBOLA

      Cerita Seks Dewasa Hot Bokep Mesum Hanya Di Cerita Seks Kisah Nyata Terbaru 2018

      Delete
  4. Replies
    1. Update Terbaru Live Score Dan Berita Terbaru Dunia Sepak bola Hanya Di BERITA SEPAKBOLA

      Cerita Seks Dewasa Hot Bokep Mesum Hanya Di Cerita Seks Kisah Nyata Terbaru 2018

      Delete
  5. Replies
    1. Update Terbaru Live Score Dan Berita Terbaru Dunia Sepak bola Hanya Di BERITA SEPAKBOLA

      Cerita Seks Dewasa Hot Bokep Mesum Hanya Di Cerita Seks Kisah Nyata Terbaru 2018

      Delete
  6. Replies
    1. Update Terbaru Live Score Dan Berita Terbaru Dunia Sepak bola Hanya Di BERITA SEPAKBOLA

      Cerita Seks Dewasa Hot Bokep Mesum Hanya Di Cerita Seks Kisah Nyata Terbaru 2018

      Delete
  7. Replies
    1. Update Terbaru Live Score Dan Berita Terbaru Dunia Sepak bola Hanya Di BERITA SEPAKBOLA

      Cerita Seks Dewasa Hot Bokep Mesum Hanya Di Cerita Seks Kisah Nyata Terbaru 2018

      Delete
  8. Update Terbaru Live Score Dan Berita Terbaru Dunia Sepak bola Hanya Di BERITA SEPAKBOLA

    Cerita Seks Dewasa Hot Bokep Mesum Hanya Di Cerita Seks Kisah Nyata Terbaru 2018

    ReplyDelete
  9. Update Terbaru Live Score Dan Berita Terbaru Dunia Sepak bola Hanya Di BOLAJP

    Cerita Seks Dewasa Hot Bokep Mesum Hanya Di Cerita Seks Kisah Nyata Terbaru 2018

    ReplyDelete
  10. Cerita Seks Dewasa Hot Bokep Mesum Hanya Di Cerita Seks Kisah Nyata

    Update Terbaru Live Score Dan Berita Terbaru Dunia Sepak bola Hanya Di BERITA SEPAKBOLA

    ReplyDelete