de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 viji
viji
Question

Ember js - Hasmany hubungan istirahat setelah memperbarui tabel lain

Saya menggunakan Ember.js dengan lokal-bagasi-adaptor. Saya punya masalah aneh saat memperbarui catatan.

Saya memiliki posting dan komentar model dengan hasMany hubungan:

App.Post = DS.Model.extend({
    title: DS.attr('string'),
    comments: DS.hasMany('comment', {
        async: true
    })
});
App.Comment = DS.Model.extend({
    message: DS.attr('string')
});

Ini saya posting dan komentar controller:

App.PostsController = Ember.ArrayController.extend({
    newTitle: '',
    actions: {
        create: function() {
            var title = this.get('newTitle');
            var post = this.store.createRecord('post', {
                title: title
            });
            this.set('newTitle', '');
            post.save();
        }
    }
});
App.CommentsController = Ember.ArrayController.extend({
    needs: "post",
    post: Ember.computed.alias("controllers.post.model"),
    newMessage: '',
    actions: {
        create: function() {
            var message = this.get('newMessage');
            var comment = this.store.createRecord('comment', {
                message: message
            });
            var post = this.get('post');
            var comments = post.get('comments');
            if (comments.get('content') == null) comments.set('content', []);
            comments.pushObject(comment);
            comment.save();
            post.save();
        }
    }
});

Saat membuat catatan hasMany hubungan diperbarui dengan benar.

{
    "App.Post": {
        "records": {
            "0v66j": {
                "id": "0v66j",
                "title": "post1",
                "comments": ["p31al", "tgjtj"]
            }
        }
    },
    "App.Comment": {
        "records": {
            "p31al": {
                "id": "p31al",
                "message": "comment 1"
            },
            "tgjtj": {
                "id": "tgjtj",
                "message": "comment 2"
            }
        }
    }
}

Masalah terjadi ketika mengedit posting. Hubungan yang hilang setelah mengedit posting catatan. Aku mencari dan menemukan kode ini:

DS.JSONSerializer.reopen({
    serializeHasMany: function(record, json, relationship) {
        var key = relationship.key;
        var relationshipType = DS.RelationshipChange.determineRelationshipType(record.constructor, relationship);
        //  alert(relationshipType);
        if (relationshipType === 'manyToNone' || relationshipType === 'manyToMany' || relationshipType === 'manyToOne') {
            json[key] = Ember.get(record, key).mapBy('id');
            // TODO support for polymorphic manyToNone and manyToMany
            // relationships
        }
    }
});

Ini melakukan trik dan bekerja dengan baik. Tapi sekarang aku punya masalah lain. Jika saya mengedit catatan lain, semua id referensi digantikan oleh seluruh objek seperti ini:

{"App.Post":{"records":{"0v66j":{"id":"0v66j","title":"post2","comments":[**{"message":"comment 1"},
{"message":"comment 2"}**]},"8nihs":{"id":"8nihs","title":"post3","comments":["b4v2b","dbki4"]}}},
"App.Comment":{"records":{"p31al":{"id":"p31al","message":"comment 1"},"tgjtj":{"id":"tgjtj","message":"comment 2"},
"b4v2b":{"id":"b4v2b","message":"comments3"},"dbki4":{"id":"dbki4",
"message":"comments4"}}}}

Komentar refrences harus komentar":["p31al","tgjtj"] seperti ini. tapi id diganti sebagai "komentar":[{"pesan":"komentar 1"},{"pesan":"komentar 2"}]

61 2013-10-26T07:40:04+00:00 2
Joshua Kleveter
Joshua Kleveter
Pertanyaan edit 15 Maret 2017 в 7:50
Pemrograman
javascript
ember.js
ember-data
has-many
 BBLN
BBLN
7 April 2015 в 5:58
2015-04-07T17:58:35+00:00
Lebih
Sumber
Sunting
#22626919

Ketika menggunakan ApplicationSerializer yang meluas LSSerializer, tampaknya untuk bekerja.

Mungkin itu bisa diperbaiki sejak diajukan?

1
0
Julian Leviston
Julian Leviston
19 April 2014 в 6:56
2014-04-19T06:56:00+00:00
Lebih
Sumber
Sunting
#22626918

I'telah memperhatikan beberapa hal di jalan saya dengan Bara... dan terutama Ember-Data.

Salah satunya adalah ketika berhadapan dengan asosiasi I've harus secara manual menambahkan dalam asosiasi tabungan dan harus kembali menyimpan, dan menggunakan addObject ke dalam memori asosiasi seperti anda're menggunakan sedikit di sini. :)

Perhatikan bahwa hal ini biasanya hanya terjadi ketika saya'm memperbarui lebih dari satu objek baru sekaligus. Misalnya, jika anda membuat posting baru, dan komentar anda juga baru.

I'm sedikit khawatir untuk lihat kode berikut pada basis kode, karena itu seharusnya't harus berada di sana. Seharusnya kau't pernah memiliki nol atau non-array objek dalam asosiasi anda. I'm tidak yakin apa yang hackery anda lakukan dengan Adaptor dan mengapa hal itu perlu, tapi saya berharap bahwa itu't alasannya:

  if(comments.get('content') == null)
    comments.set('content', []);

Pokoknya, kode berikut adalah cara saya mungkin akan menulis anda membuat tindakan. Ini mungkin bisa membantu. Saya berharap itu tidak.

create: function() {
  // get the post for association on the new comment
  var post = this.get('post');

  // get the message to store on the new comment
  var message = this.get('newMessage');

  var comment = this.store.createRecord('comment', {
    message : message,
    post : post
  });

  comment.save().then(function(savedComment) {
    post.get('comments').addObject(savedComment);
  });
}

Perhatikan bahwa itu's jauh lebih sederhana. Umumnya jika anda're lakukan rumit hal-hal yang rumit, sesuatu yang's salah dan itu's waktu untuk kembali ke dasar-dasar dan menambahkan satu hal pada satu waktu, pengujian secara menyeluruh antara penambahan. :)

Good luck!

-1
0
Related communities 1
JavaScript Indonesia
JavaScript Indonesia
14 533 pengguna
Grup JavaScript yang membahas JavaScript, framework JS, dan Node JS secara universal. Cek Pinned Message untuk keterangan lebih lanjut. Komunitas ReactJS: https://t.me/react_idn
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 7 jam yang lalu
2
Akshit Mehta
Terdaftar 2 hari yang lalu
3
me you
Terdaftar 6 hari yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi