2014-11-21 78 views
2

我在app.rb文件下面的代碼:紅寶石/ sqlite3的結果哈希返回重複數據

require 'sinatra' 
require 'json' 
require 'sqlite3' 

get '/api/clients' do 
    db = SQLite3::Database.new "db/db" 
    db.results_as_hash = true 
    {clients: db.execute('SELECT * FROM clients')}.to_json 
end 

檢查在瀏覽器中的結果,我們可以看到這一點:

enter image description here

當我設置db.results_as_hash = true時,爲什麼散列以及數組被返回?

+0

看起來像它故意這樣開發,以支持通過名稱和索引引用值:https://www.ruby-forum.com/topic/177763 – GolfWolf 2014-11-21 18:21:00

+0

@ w0lf,我不知道爲什麼這是這種情況。它確實沒有任何意義。 – 12hys 2014-11-24 01:35:01

回答

0

Line 584來源顯示記錄返回爲鍵值對,其中列名是鍵,值是記錄的數據。它還插入標題的索引值。據推測,這是爲了保留舊版本Ruby的結果散列中的順序依賴性。 Ruby> 1.9保留了插入順序。

結果的寶石returns a ResultSet as an array。如果用戶將results_as_hash設置爲true,則內部陣列會變成您正在看到的哈希。