iT邦幫忙

DAY 17
0

練習如何去開發一個通訊軟體 Boo it!系列 第 17

Day 17 – Sinatra 與MongoDB的約會!

  • 分享至 

  • xImage
  •  

前面我們介紹了sinatra與mongoDB兩個我們會使用到的網頁開發框架以及資料庫系統。接下來我們就要使用並且結合他們。

接下來就必須安裝 mongo 以及 bson套件 ,如以下指令:

gem install mongo

gem install bson_ext

那我們就直接來使用sinatra來幫助我們存取mongoDB。

require 'sinatra'

require 'mongo'

require 'json/ext'

include Mongo

configure do

  conn = MongoClient.new("localhost", 27017)

  set :mongo_connection, conn

  set :mongo_db, conn.db('Boo')

end

我們之前有建立了帳戶資料表,現在這邊我們可以看到Boo的架構是:

<db> -- <collections>

Boo -- Accounts # 帳戶資料 (帳號 密碼 朋友)

-- Dialog # 歷史訊息 (訊息 時間 日期)

那我們可以建立 helpers 幫助我們定義methods去存取使用mongoDB

helpers do

    # 查詢物件ID

    def object_id val

        BSON::ObjectId.from_string(val)

    end

    # 由id搜尋密碼

    def password_by_id id

        id = object_id(id) if String === id

            @obj = settings.mongo_db['accounts'].find_one(:_id => id).to_json

        parsed = JSON.parse(@obj)

        @password = parsed["password"]

    end

    # 由id搜尋帳戶名稱是否存在

    def username_by_id id

        id = object_id(id) if String === id

            @obj = settings.mongo_db['accounts'].find_one(:_id => id).to_json

        parsed = JSON.parse(@obj)

        return parsed["username"].to_s

    end

end

    # 由ID找尋朋友名單

    def friends_by_id id

        id = object_id(id) if String === id

            @obj = settings.mongo_db['accounts'].find_one(:_id => id).to_json

        parsed = JSON.parse(@obj)

        friends = parsed["friends"]

        if friends.nil?

            return nil.to_a.to_json

        else

            return friends.to_json

        end

    end

    # 由對話ID取得歷史訊息

    def history_by_id id

        @history_obj = settings.mongo_db['dialog'].find_one(:did => id).to_json

        if @history_obj.to_s == "null"

            return nil.to_a.to_json

        else

            his_parsed = JSON.parse(@history_obj)

            ch_log = his_parsed["dialog"]

            return ch_log.to_json

        end

    end

那我們以sinatra的HTTP request GET,來使用以上我們定義的方法。

# 印出使用者帳戶

get '/username/ :id/? ' do

  content_type :json

  "#{ username_by_id (params[:id]).to_s}"

end

那這樣我們就可以存取mongoDB來幫助我們取得使用者帳戶名稱。

當然我們還可以進行INSERT DELETE FIND UPDATE功能。(我們可以透過查看Document來幫助我們進行所需要的功能)

以上定義的方法都是我們會使用到的功能(初步功能),Let’s Boo it !

後面會繼續在完成以上的程式碼來達到使用者帳戶存取、朋友名單、以及建立連線來達到我們所要的通訊功能。

讓我們繼續看下去...


上一篇
Day16 - MongoDB ‧ 資料儲存的百寶箱!
下一篇
Day18 - 交換訊息中心 Boo it - chat_server 。
系列文
練習如何去開發一個通訊軟體 Boo it!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言