2013-12-18 15 views
8

Tôi đang sử dụng dữ liệu Ember với bộ điều hợp RESTful với phần phụ trợ đường ray.Dữ liệu Ember mong đợi để phản hồi việc xóa bản ghi là gì?

Khi tôi xóa một bản ghi từ Ember record.deleteRecord(); record.save() các DELETE yêu cầu đi đến máy chủ và mô hình này sẽ bị xóa, nhưng lỗi này được in ra cửa sổ Console javascript:

Extract requested, but no data given for App.ThisModel. This may cause weird problems. 

Câu trả lời từ máy chủ chỉ render json: true , vì vậy tôi đã đổi nó thành render json: deleted_model để hiển thị json cho bản ghi đã xóa.

Điều đó đã loại bỏ lỗi trước đó, nhưng hiện tại bản ghi đã xóa được tạo lại trong Ember.

Ember mong đợi gì trong phản hồi?

Trả lời

7

Bạn nên gửi lại 200 có phản hồi json hợp lệ trống {}, mọi dữ liệu được trả lại được áp dụng cho bản ghi như thể chúng là thuộc tính.

http://emberjs.jsbin.com/OxIDiVU/215/edit

Ngoài ra, bạn có thể gửi lại 204 không có phản hồi.

http://emberjs.jsbin.com/OxIDiVU/214/edit

+0

Câu trả lời của bạn là đúng, nhưng tôi hơi tò mò, điều gì sẽ xảy ra với các thuộc tính? Nếu một yêu cầu xóa trả về 200 tài nguyên cần phải được loại bỏ, những gì sẽ làm với các thuộc tính cho một tài nguyên bị xóa? – everett1992

+0

Nó sẽ áp dụng chúng vào hồ sơ, sau đó đánh dấu nó là đã xóa, thân của ngớ ngẩn, nhưng phương pháp _commit của Ember Data được tổng quát để xử lý tạo/cập nhật/xóa. – Kingpin2k

4

jQuery 1.9 no longer treats một phản ứng của 200 cho một yêu cầu JSON như một thành công. Máy chủ của bạn hiện phải trả lại phản hồi 204 cho các yêu cầu DELETE với nội dung phản hồi trống.

Đối với một máy chủ ray, bạn có thể làm một cái gì đó như thế này:

def destroy 
  @something.destroy! 
  head :no_content 
end 
+0

Điểm tốt Sapan, tôi đã cập nhật câu trả lời của tôi để phản ánh điều này là tốt. – Kingpin2k

+0

Hoặc tốt hơn 'hiển thị trạng thái: no_content, không có gì: true' trong trường hợp JSON API chẳng hạn. –

0

Trong ember 1.5.1 và ember dữ liệu 1.0.0-beta.9+canary.410d62d6, tôi đã cố gắng để trở về một sản phẩm nào json đối tượng/mảng, như { }, như trong câu trả lời ở trên. Nó không hoạt động.

Chỉ hoạt động với mã phản hồi 200null làm giá trị phản hồi.

Vì vậy, có thể điều đó đã thay đổi, hoặc nó phụ thuộc vào những thứ khác ... Tôi không thể nói, nhưng chỉ cho bạn biết những gì đã làm việc cho tôi.

Các vấn đề liên quan