In Ruby gibt MongoDB einen BSON :: OrderedHash zurück. Wie kann ich es in JSON konvertieren? Die Verwendung von to_json führt zu einem Fehler "Stack-Level zu tief" [geschlossen]

8

Ich versuche, einen Webservice mit Ruby Sinatra und MongoDB zu erstellen. Es wird JSON-Objekte zurückgeben. Ich entschied mich, MongoDB zu verwenden, weil es Dokumente intern in einer "JSON-ähnlichen" Struktur speichert. Ich dachte, dies würde es mir leicht machen, eine Abfrage auszuführen und ein JSON-Ergebnis an den Client zu senden. Ich habe jedoch Probleme beim Konvertieren der Ergebnisse von MongoDB in JSON.

MongoDBs find_one () gibt einen BSON :: OrderedHash zurück. Aus der Dokumentation sieht es so aus, als ob sie sich ähnlich wie Rubys Hash-Typ verhalten sollte. Wenn ich versuche, es mithilfe der .to_json-Funktion in JSON zu konvertieren, erhalte ich den Fehler "Stack-Level zu tief". Der Versuch, ein identisches zu konvertieren, funktioniert gut.

Dieser Code funktioniert wie ich es erwarte:

%Vor%

Dieser Code erzeugt 'to_json': Stapelebene zu tief (SystemStackError):

%Vor%

Der Versuch, zuerst in Hash zu konvertieren, hat nicht geholfen. Derselbe Fehler.

%Vor%

Warum bekomme ich den Stack Level zu tief Fehler? Dies ist ein einfacher Hash. Ist es einfach, die MongoDB-Ergebnisse in JSON zu konvertieren? Ich möchte keine Konvertierungsfunktion schreiben, die für meine Daten spezifisch ist. Das besiegt den Punkt, eine schemalose Datenbank zu haben.

    
Chad DeShon 30.05.2010, 20:22
quelle

1 Antwort

3

Versuchen Sie diese Problemumgehung:

%Vor%     
atretkow 21.07.2010 13:57
quelle

Tags und Links