AKTUALISIERUNG: Unten finden Sie einen Originalbeitrag zu Ember Data Relationships, von dem ich glaube, dass er eher mit einem Problem mit dem EmberFire-Adapter zusammenhängt und wie viele Array-Datensätze verarbeitet werden. Es scheint, dass die lokale store
in Ember Data ordnungsgemäß aktualisiert wird, diese Datensätze werden jedoch nicht in die entsprechende Firebase-Datenbank verschoben, nachdem der Speicher aktualisiert wurde.EmberFire Datenrelationen werden nicht korrekt aktualisiert
Ich habe die emberfire- und firebase-Tags hinzugefügt, um hoffentlich eine Antwort in dieser Community zu finden. Jede Hilfe wird geschätzt, und ich bin glücklich, zusätzliche Informationen bei Bedarf bereitzustellen.
Ich habe zwei Modelle, die mit hasMany und belongsTo Beziehungen definiert sind. Hier ist der erste „Rahmen“ Modell:
// -- Frameworks Model
import DS from 'ember-data';
const { attr, hasMany } = DS;
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
questions: { serialize: 'ids' }
}
});
export default DS.Model.extend({
name: attr('string'),
reports: hasMany('report'),
questions: hasMany('question', {async: true}),
includedFramework: attr('string'),
reportOnlyOnce: attr('string', { defaultValue: false }),
frameBuilder: attr('string', {defaultValue: "none"}),
createdAt: attr('string'),
createdBy: attr('string'),
updatedAt: attr('string'),
updatedBy: attr('string')
});
Und die zweite „Frage“ Modell:
// -- Question Model
import DS from 'ember-data';
const { attr, hasMany, belongsTo } = DS;
export default DS.Model.extend({
framework: belongsTo('frameworks', {async: true}),
detail: attr('string'),
type: attr('string'),
createdAt: attr('string'),
createdBy: attr('string'),
position: attr('number'),
options: hasMany('option')
});
Auf meinem Weg, ziehe ich in dem Modell für den Rahmen (in diesem Fall die Definition des Modells ID zum Testen):
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
let id = params.report_id;
var self = this;
return Ember.RSVP.hash({
report: this.store.find('report', id),
general: this.store.find('frameworks', '-KITSAxjdE5TiVdk-aPC')
})
}
});
aus irgendeinem Grund hat dieser Rahmen ein Array in Fragen gespeichert, die 4 der 6 verschiedenen „Fragen“ hat, die zu ihm gehören sollte. Ich weiß nicht, warum 4 der im Rahmenmodell auch gespeichert und 2 von ihnen nicht. In meiner Vorlage für die Seite:
{{#each model.general.questions as |question|}}
{{#paper-item class="md-1-line"}}
<p class="question">
{{question.detail}}
</p>
<p class="option">
{{#if (eq question.type "text")}}
{{paper-input value=question.id onChange=(action (mut question.id))}}
{{/if}}
</p>
{{/paper-item}}
{{#each model.general.questions as |question|}}
funktioniert hervorragend für die 4 Fragen, die für diese ID im Rahmen Modell tatsächlich gespeichert sind, nicht aber die anderen 2. Die anderen 2 Fragen nicht die belongsTo Beziehung der Referenzierung haben korrekter Rahmen.
Ich habe versucht, einen Serializer im Framework-Modell hinzuzufügen (wie Sie oben sehen können), aber es gab keine Änderung.
ich auch versucht habe, manuell hinzufügen, die Frage des Rahmen speichern, wenn eine neue Frage mit erstellt:
framework.get('questions').then(function(question) {
return question.pushObject(newQuestion);
})
aber keine Änderung mit, dass entweder.
Alle Gedanken sind willkommen, ich bin gerne bereit, weitere relevante Code-Schnipsel zur Verfügung zu stellen.
Ich habe einigen Kontext in der Github Ausgabe – tstirrat