2016-04-22 6 views
0

Ich entwerfe gerade eine Webanwendung, die mit einer Rails-API auf einer Postgres-Datenbank kommuniziert. Ich speichere einige meiner Daten im JSON-Format unter Verwendung des Jsonb-Datentyps in Postgres. Die Schlüssel in der Javascript-Objekte I an die Rails API bin Einreichung sind in allen Kappen:Postgresql JSON-Schlüssel mit Unterstrichen zwischen Buchstaben?

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

Die Daten nur gut vorträgt, aber wenn ich in der Datenbank suchen, werden die Schlüssel mit Unterstrichen zwischen den Buchstaben gespeichert, dies wie:

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

Wenn ich die Rails-Konsole verwenden, um ein Modellobjekt aus der DB werden die Schlüssel noch in der gleichen Art und Weise gespeichert, mit Unterstrichen zwischen den Buchstaben zu erstellen. Aber wenn die Daten in meine Webanwendung zurückkommen, sind die Schlüssel wieder auf Großbuchstaben, keine Unterstriche. Was ist der Grund dafür, die Schlüssel in der Datenbank so zu speichern?

+0

Niemals das Problem zuvor gesehen, aber der von Ihnen gesendete JSON ist nicht gültig. Beeinflusst das das? Gültige JSON-Version unter https://gist.github.com/maxshelley/43848eb3d699a9761cfe7b419639ec40 – maxshelley

+1

Postgres berührt Ihre Schlüssel nicht. Stattdessen transformiert rails (oder eine der Komponenten, die Sie verwenden) Schlüssel von 'camelCase' in' under_scores'. Da Sie jedoch Großbuchstaben verwenden, erhält jeder Buchstabe einen Unterstrich. – pozs

+0

@maxshelley Entschuldigung, ich schrieb das als tatsächliches Javascript-Objekt anstelle des gültigen JSON-Formats. – ClydeDroid

Antwort

0

@pozs führte mich in die richtige Richtung - es sieht aus wie die Ressourcenbibliothek, die ich verwende, angularjs-rails-resource, konvertiert die Attribute.

"Standardmäßig konvertieren wir Attributnamen zwischen Unterstrich und Kamel."

Vielen Dank!

Verwandte Themen