RelationalModel-Beziehungsfeld bei NULL, nachdem der Job abgeschlossen wurde

8

Ich habe ein Problem, das ich nicht verstehen kann. Ich erkläre:

Ich habe ein Modell mit dem Namen Produkt:

%Vor%

Mein Feld user_id ist ein Fremdschlüssel für einen Benutzer (der auch ein Modell im Backbone ist):

%Vor%

Meine Abrufbeziehungen funktionieren in jedem einzelnen Modell einwandfrei. Aber wenn ich eine Beziehung zwischen dem Product.user_id und meinem Benutzermodell einfüge, tritt ein WTF-Fehler auf.

Ich habe alles Mögliche versucht: alle Schlüssel ( keySource , keyDestination ....... mit allen möglichen Werten). Ich habe sogar Breakpoints in die Relation Lib gesetzt, um sehen zu können, was passiert ist ... Nichts zu sagen. Selbst StackOverflow kennt diesen Fehler nicht: P (Oder ich habe schlecht gesucht)

Das letzte Problem ist:

  • Mein Produkt wird korrekt von der API gesendet und im Backbone (OK) festgelegt.
  • Das Feld user_id wird zuerst von der Product-API-Antwort auf eine Zahl gesetzt und dann von Relational auf NULL gesetzt, anstatt durch das Objekt User (WARUM?)
  • ersetzt zu werden
  • Wenn ich meinen Netzwerk-Debugger beobachte, rufe Relational die API für das User-Objekt (hier ist alles in Ordnung) mit der user_id -Nummer (OK) auf. Die Serverantwort ist gut, mit dem richtigen Benutzer in JSON (OK). Aber Relational bindet dieses Antwortobjekt nicht mit dem Feld user_id , das jetzt .... NULL (NICHT OK) ist.
    • Also habe ich ein Benutzerobjekt verloren (aber ich kann console.log () wenn ich eine Erfolgsfunktion in meinem AutoFetch einfüge), nicht korrekt mit seinem Elternprodukt mit dem Feld user_id verbunden.

BEARBEITEN: Ein JSFiddle ist hier verfügbar Ссылка (Vorsicht, die API kann lang sein zu reagieren, etwa 10 Sekunden, es ist normal).

Vielen Dank im Voraus: / Entschuldigung für die Zeit, die Sie dafür brauchen.

    
gjdass 29.03.2014, 02:37
quelle

3 Antworten

1

Verhält es sich anders, wenn Sie den Standardwert von user_id entfernen? Ich frage mich, ob es die Beziehung abruft und dann den Standardwert null anwendet.

Sie können auch versuchen, Backbone.Relational.showWarnings auf true zu setzen, falls dies noch nicht der Fall ist, und in Ihrer Konsole nach Warnungen suchen.

    
Peter G 29.03.2014 23:49
quelle
0
___ qstnhdr ___ RelationalModel-Beziehungsfeld bei NULL, nachdem der Job abgeschlossen wurde ___ answer22896189 ___

Wenn Sie also die relationale Backbone-Dokumentation genau betrachten, werden Sie feststellen, dass keines der Beispiele HasOne mit einer reverseRelation von HasMany ist. Daher scheint es, dass Funktionalität (außer von Ihnen!) Noch nicht getestet wurde und nicht funktioniert. Probieren Sie die Beziehung anders aus:

%Vor%     
___ qstntxt ___

Ich habe ein Problem, das ich nicht verstehen kann. Ich erkläre:

Ich habe ein Modell mit dem Namen Produkt:

%Vor%

Mein Feld key ist ein Fremdschlüssel für einen Benutzer (der auch ein Modell im Backbone ist):

%Vor%

Meine Abrufbeziehungen funktionieren in jedem einzelnen Modell einwandfrei. Aber wenn ich eine Beziehung zwischen dem key und meinem Benutzermodell einfüge, tritt ein WTF-Fehler auf.

Ich habe alles Mögliche versucht: alle Schlüssel ( keyDestination , includeInJSON ....... mit allen möglichen Werten). Ich habe sogar Breakpoints in die Relation Lib gesetzt, um sehen zu können, was passiert ist ... Nichts zu sagen. Selbst StackOverflow kennt diesen Fehler nicht: P (Oder ich habe schlecht gesucht)

Das letzte Problem ist:

  • Mein Produkt wird korrekt von der API gesendet und im Backbone (OK) festgelegt.
  • Das Feld %code% wird zuerst von der Product-API-Antwort auf eine Zahl gesetzt und dann von Relational auf NULL gesetzt, anstatt durch das Objekt User (WARUM?)
  • ersetzt zu werden
  • Wenn ich meinen Netzwerk-Debugger beobachte, rufe Relational die API für das User-Objekt (hier ist alles in Ordnung) mit der %code% -Nummer (OK) auf. Die Serverantwort ist gut, mit dem richtigen Benutzer in JSON (OK). Aber Relational bindet dieses Antwortobjekt nicht mit dem Feld %code% , das jetzt .... NULL (NICHT OK) ist.
    • Also habe ich ein Benutzerobjekt verloren (aber ich kann console.log () wenn ich eine Erfolgsfunktion in meinem AutoFetch einfüge), nicht korrekt mit seinem Elternprodukt mit dem Feld %code% verbunden.

BEARBEITEN: Ein JSFiddle ist hier verfügbar Ссылка (Vorsicht, die API kann lang sein zu reagieren, etwa 10 Sekunden, es ist normal).

Vielen Dank im Voraus: / Entschuldigung für die Zeit, die Sie dafür brauchen.

    
___ antwort22883049 ___

Geben Sie eine Einstellung:

%Vor%

Ich konnte weder Kopf noch Zahl der Backbone-relationalen Dokumentation machen. Offenbar soll %code% auf die ID des zugehörigen Modells verweisen, aber das scheint in keinem ihrer Beispiele so zu sein. Ich frage mich, ob ihre Beispiele tatsächlich funktionieren? Wie auch immer, ich denke, das behebt Ihr Problem: Setzen Sie %code% auf den Schlüssel aus dem verwandten Modell und setzen Sie %code% und %code% , damit es weiß, wie das Ergebnis in das Produktobjekt gesetzt und serialisiert wird.

    
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123backbonejs ___ Backbone.js ist ein JavaScript-Framework mit einer RESTful JSON-Schnittstelle und basiert auf dem MVP-Design (Model-View-Presenter) ___ answer22738432 ___

Verhält es sich anders, wenn Sie den Standardwert von %code% entfernen? Ich frage mich, ob es die Beziehung abruft und dann den Standardwert %code% anwendet.

Sie können auch versuchen, %code% auf %code% zu setzen, falls dies noch nicht der Fall ist, und in Ihrer Konsole nach Warnungen suchen.

    
___ tag123backbonerelational ___ Ermittelt und setzt Relationen (Eins-zu-Eins, Eins-zu-Viele, Viele-zu-Eins) für Backbone-Modelle. ___ tag123relationalmodel ___ Für Fragen zur Verwendung des relationalen Modells für Datenbanken. ___ tag123modelviewcontroller ___ Model-View-Controller (MVC) ist ein Architekturmuster, das im Software-Engineering verwendet wird. Verwenden Sie für Microsoft ASP.NET MVC stattdessen das [asp.net-mvc] -Tag. Verwenden Sie für Spring MVC bitte das [spring-mvc] -Tag. ___
Peter G 05.04.2014 15:46
quelle
0

Wenn Sie also die relationale Backbone-Dokumentation genau betrachten, werden Sie feststellen, dass keines der Beispiele HasOne mit einer reverseRelation von HasMany ist. Daher scheint es, dass Funktionalität (außer von Ihnen!) Noch nicht getestet wurde und nicht funktioniert. Probieren Sie die Beziehung anders aus:

%Vor%     
Peter G 06.04.2014 15:43
quelle