2016-07-01 8 views
1

Hintergrund: Ich habe eine API in Rails und einen Client in Angular erstellt. Meine API stellt eine Verbindung mit einer API eines Drittanbieters her und greift auf einige Daten zu. Diese Daten werden als verschachteltes Objekt/Hash eingegeben, das in MongoDB/Mongoid gespeichert wird. Wenn meine Angular-Clients die Daten manipulieren und sie an meine API senden, um sie zu speichern, werden alle leeren Arrays innerhalb des verschachtelten Hash/Objekts durch null ersetzt.Wie vermeiden Mongoid (oder MongoDB) leere Arrays durch Null ersetzen

Gibt es eine Weise, die ich dies geschieht vermeiden konnte (manuell andere als die Umwandlung der alle null s zurück zu array aber das wäre langwierig und komplex sein, wie ich auch diese aktualisierte Daten auf den dritten Teil API schieben müssten) ?

Antwort

1

versuchen

field :your_field, type: Array, default: [] 

oder

field :your_field, type: Hash, default: {} 
+0

Ja, ich bin mir dessen bewusst, aber ich für ein Feld verstanden, die ein Hash ist, die Arrays in geschachtelt hat ... und denken Sie daran, die bereits Daten existieren, habe ich von einer anderen API importiert, ist es gerade, als ich es aktualisierte, ersetzt Mongoid die leeren Felder, die bereits dort sind, und ersetze es durch 'Null' – WagnerMatosUK

+1

, die Schienenversion verwendest du ?, wenn du Schiene 4 verwendest, dann versuche es einfach config.action_dispatch.perform_deep_munge = false, Sie können diesen Link für weitere Details http: //www.amilitalia.i überprüfen t/github.com/rails/rails/pull/13188.html – Jack

+0

das scheint wie ein Charme gearbeitet zu haben :) Willst du deine Antwort ändern, damit ich sie akzeptieren kann? – WagnerMatosUK