2016-04-22 93 views
0

我目前正在設計一個與Postgres數據庫之上的Rails API對話的Web應用程序。我使用PostgreSQL中的jsonb數據類型以JSON格式存儲一些數據。我提交到Rails的API中的JavaScript對象的關鍵是在全部大寫:Postgresql顯示字母之間的下劃線的JSON密鑰?

{ 
    WEIGHT: 150, 
    RACE: 'White/Caucasian', 
} 

將數據提交就好了,但是當我看在數據庫中,密鑰存儲與字母之間的下劃線,像這樣:

{ 
    "W_e_i_g_h_t": 150, 
    "R_a_c_e": "White/Causasian", 
} 

如果我使用Rails的控制檯來創建從數據庫模型對象,按鍵仍然存儲在相同的方式,用字母之間的下劃線。但是當數據返回到我的web應用程序時,這些密鑰又回到了所有大寫字母,沒有下劃線。像這樣將密鑰存儲在數據庫中的原因是什麼?

+0

以前從未見過這個問題,但您提交的JSON無效。這是否影響它?有效的JSON版本位於https://gist.github.com/maxshelley/43848eb3d699a9761cfe7b419639ec40 – maxshelley

+1

Postgres不會觸摸您的密鑰。相反,rails(或者你使用的其中一個組件)將key從'camelCase'轉換爲'under_scores'。但是,因爲您使用全部大寫的鍵,每個字母都會得到一個下劃線。 – pozs

+0

@maxshelley對不起,我寫了一個實際的Javascript對象而不是有效的JSON格式。 – ClydeDroid

回答

0

@pozs讓我朝着正確的方向 - 它看起來像我正在使用的資源庫,angularjs-rails-resource,轉換屬性。

「默認情況下,我們在下劃線和駝峯大小之間轉換屬性名稱。」

非常感謝!