Tôi mới làm quen với quan hệ Backbone, tôi không chắc cách nào là đúng cách để sử dụng HasMany.Thực hành tốt nhất về xương sống-quan hệ
Tôi có một mô hình Parent
có nhiều children
(bởi "nhiều" tôi có nghĩa là hàng ngàn trẻ em). Để tránh vấn đề về hiệu suất, tôi truy vấn trẻ em bằng khóa ngoại của chúng: /child/?parent=1
, thay vì tạo một danh sách lớn gồm child_ids
trong Parent
. Nhưng dường như đây không phải là cách làm việc của Backbone-relational.
Vì vậy, tôi tự hỏi điều gì là đúng cách để xử lý việc này.
1, Thay đổi api json tôi để bao gồm danh sách các id con ở phụ huynh, sau đó gửi hàng ngàn id như Backbone quan hệ giới thiệu:
url = function(models) {
return '/child/' + (models ? 'set/' + _.pluck(models, 'id').join(';') + '/' : '');
}
// this will end up with a really long url: /child/set/1;2;3;4;...;9998;9999
2, ghi đè lên nhiều phương pháp trong Backbone-quan hệ, để cho nó xử lý tình huống này. Suy nghĩ đầu tiên của tôi là:
relations: [{
collectionOptions: function(model){
// I am not sure if I should use `this` to access my relation object
var relation = this;
return {
model: relation.relatedModel,
url: function(){
return relation.relatedModel.urlRoot + '?' + relation.collectionKey + '=' + model.id;
}
}
}
}]
// This seems work, but it can not be inherent by other model
// And in this case parent will have am empty children list at beginning.
// So parent.fetchRelated() won't fetch anything, I need call this url my self.
3, Chỉ sử dụng Backbone-relational as a Store, sau đó sử dụng Bộ sưu tập để quản lý quan hệ.
4, Một số cách thức ma thuật hoặc khuôn mẫu hoặc khung xương sống khác
Cảm ơn bạn đã trợ giúp.
Trong kinh nghiệm của tôi với quan hệ xương sống, tôi không nghĩ rằng nó sẽ hoạt động tốt với hàng ngàn mô hình. Tôi đã có một số vấn đề hiệu suất đáng kể với hàng trăm mô hình - đặc biệt khi tải chúng. Backbone-relational khá "trò chuyện" với các sự kiện bắn và tùy thuộc vào số lượng thuộc tính bạn có trong mô hình của mình, kết quả là hàng chục sự kiện được kích hoạt trên mỗi mô hình nghìn lần các mô hình. –
Tôi tò mò làm thế nào bạn cuối cùng đã xử lý này. –
đây là cách tôi cuối cùng sử dụng, không phải là rất sạch sẽ, nhưng hoạt động cho đến nay. – xzhang