2017-11-09 1 views
0

Verwenden Sie die neueste Version von Waterline 0.13.1-6 Standalone.Array in Modell in Waterline speichern und analysieren

Der Typ array ist in dieser Version nicht mehr vorhanden. Also nehme ich an, dass die Art, wie Arrays gespeichert werden, jetzt der Typ JSON ist.

Probe meines Modells Model:

attributes: { 
    someArray: { type: 'json' } 
    } 

Problem: auf einer Instanz von Model ist model.someArray jetzt ein String. Ich sollte JSON.parse es jedes Mal, wenn ich einen anfordern, um die Werte im Array zu erhalten. Das ist sehr unpraktisch und kann offensichtlich zu Fehlern führen.

Gibt es einen eingebauten Weg in der neuen Waterline, um diese sauber zu machen (JSON-Felder automatisch parsen ...)?

+0

Erhalten Sie nur das Array-Feld im String-Format oder die gesamte Antwort? – albertpeiro

+0

Nur das Array-Feld (jedes JSON-Feld, das ich tatsächlich definiere); Das Modellobjekt selbst (und die Nicht-JSON-Eigenschaften) funktionieren einwandfrei. – Cobaltway

Antwort

1

Sie können JSON wie vorgeschlagen verwenden. Keine Notwendigkeit, es zu analysieren, dies geschieht automatisch, wenn Sie Ihren Meta-Abruf oder Suche durchführen. Sie können tun,

YourModel.create({someArray: [1,2,3]}).meta({fetch: true}).then(out => { console.log(out.someArray[0]); //1; });

ich es für die Suche nach etwas andere identifizierende Attribut haben würde, wie myRef sagen: {type: 'string'}

Dann können Sie tun

YourModel.find({myRef: 'something'}).limit(1).then(out => { console.log(out[0].someArray[1]); //2 });

+1

Große Antwort! Randnotiz: Ab der letzten Version von Sails v1 (und [email protected]) können Sie nun auch ['.fetch()'] (https://github.com/balderdashy/sails-docs/blob /f4858b0d3c6bb80bc130060ecdd428e735ec111e/reference/waterline/queries/fetch.md) als eine Abkürzung für '.meta ({fetch: true})' – mikermcneil

+0

Sorry für die späte Antwort, aber ich verstehe es nicht. Das Dokument sagte, dass diese Option die geänderten Werte zurückgibt, wenn ein Update durchgeführt wird. Es sagt nichts über das Analysieren des JSON-Feldes bei der Verwendung eines find() ... Nebenbei: Meine Modelle sind bereits erstellt (ohne Meta-Fetch). Wie kann ich mit Find ihre JSON-Felder richtig lesen? – Cobaltway

+0

Okay, es scheint, dass einige Werte von meiner Basis als Zeichenfolge mit einem JSON ... Fehler aus dem Legacy-Speicher codiert wurden, denke ich. Ich markiere das trotzdem als beantwortet. – Cobaltway

Verwandte Themen