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.