@longnk1301
Hiện tại mình đã giải quyết được xong vấn đề chỉ bằng cách gọi thêm apis trong hàm componentDidupdate (như cách bạn @HuyDQ bày bày cho m bên dưới ) chứ chưa tách api ra 2 component con như bạn nói.
Bạn cho mình hỏi thêm về cách của bạn, theo đó cách của bạn thì vấn đề của mình sẽ được giải quyết như thế nào ạ
Đây không phải là trong đb bạn nhé. Cái bạn đang dùng là js (datatable) và nó có lưu hết data được server trả về. Bạn có thể thử dùng rows().data() để lấy ra hết các row xem sao.
Theo mình đây là 1 cách để giảm tải cho Database. Ví dụ khi sử dụng 1 database sẽ bị quá tải khi có quá nhiều các thao tác get, set DB. Khi DB là hệ thống replication vs 3 DB, mình có thể ghi trên 1 DB và đọc trên 2 DB còn lại để giảm số lần set, get trên 1 DB.
@wiliamfeng ở đây bạn có thể dùng thêm hàm componentDidUpdate để gọi API mới nhé. Giả sử url của bạn là /product/p-a thì bạn gọi API load sản phẩm p-a trong componentDidMount. Sau đó khi bạn click vào link sản phẩm liên quan thì dùng hàm componentDidUpdate để gọi API mới
@wiliamfeng :v mình thì thấy cách của bạn khó maintain hơn đấy, vì cùng 1 file nên code rất dài. Cách của bạn theo mình thấy thì khi load trang sẽ chậm hơn bởi vì call 2 api cùng 1 lúc có khi dẫn tới bất đồng bộ, nếu làm theo cách của mình ví dụ product của bạn không có các sản phẩm liên quan thì sẽ không cần phải call api ở bên ProductRelated
Thanks bạn Duy,
Mình chưa từng làm rails và ruby nhưng giờ có job mới về maintenance đang sử dụng rails, ruby cùng với postgres, redis và sidekiq. Source code hiện tại theo mình nghĩ đã full configure cho local run. Nhưng mình không thể thiết lập được môi trường để run nó locally. Ban đầu khi chưa biết về docker compose, mình định install tất cả components lên máy mình (windows 10). Nhưng khi thấy được Dockerfile and docker-compose.yml trong source code, mình thử tìm hiểu và đi đến bài viết của bạn. Tuy nhiên sau khi minh install docker and run command docker-compose up, nó báo lổi này:
ERROR: An invalid argument was supplied.
Nếu run với command: docker-command build, sau một thời gian lâu download packages, nhưng lại failed với lỗi này:
Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease Unable to find expected entry 'main/binary-amd64/Packages' in Release file (Wrong sources.list entry or malformed file)
Nếu được cho mình xin email của bạn để trao đổi chi tiết hơn.
Thanks bạn.
THẢO LUẬN
@longnk1301 Hiện tại mình đã giải quyết được xong vấn đề chỉ bằng cách gọi thêm
apistrong hàmcomponentDidupdate(như cách bạn @HuyDQ bày bày cho m bên dưới ) chứ chưa tách api ra 2 component con như bạn nói.Bạn cho mình hỏi thêm về cách của bạn, theo đó cách của bạn thì vấn đề của mình sẽ được giải quyết như thế nào ạ
@Naem có run ạ
@Lee_Kum Bạn thử cách này xem
https://stackoverflow.com/questions/31932680/jquery-datatables-access-all-rows-data
@tuanbacyen thì mình nói là datatable mà. chắc do mình viết sai thành data table. => mình đã thử vẫn chỉ lấy dc 1 page
@devil_boom_129 đấy giờ ra lỗi khác rồi kìa =)) xem xem là con elasticsearch này có đang running ko (docker ps)
Đây không phải là trong đb bạn nhé. Cái bạn đang dùng là js (datatable) và nó có lưu hết data được server trả về. Bạn có thể thử dùng
rows().data()để lấy ra hết các row xem sao.Thằng này nó kêu mạnh về làm animation mà không ngon lắm thì hơi các bác nhỉ
)))
Google quá đang quá. Đọc cứ thấy mơ mơ
@Naem
@Naem lệnh trên là em chạy tại web container đấy ạ
Có thể do bạn đang chạy ngoài docker nên host ko nhận ra được, bạn bash vào docker của web container rồi exec lại lệnh trên ra xem có được ko :-?
xịn xò qúa bạn ơi (F)
Theo mình đây là 1 cách để giảm tải cho Database. Ví dụ khi sử dụng 1 database sẽ bị quá tải khi có quá nhiều các thao tác get, set DB. Khi DB là hệ thống replication vs 3 DB, mình có thể ghi trên 1 DB và đọc trên 2 DB còn lại để giảm số lần set, get trên 1 DB.
thanks bác
@HuyDQ tks bạn, m sẽ test thử.
hehe, cảm ơn bạn nhé
@wiliamfeng ở đây bạn có thể dùng thêm hàm
componentDidUpdateđể gọi API mới nhé. Giả sử url của bạn là/product/p-athì bạn gọi API load sản phẩmp-atrongcomponentDidMount. Sau đó khi bạn click vào link sản phẩm liên quan thì dùng hàmcomponentDidUpdateđể gọi API mới@longnk1301 Để m test thử đã nhé. Cso gì m sẽ hỏi lại bạn sau. Tks bạn
@wiliamfeng :v mình thì thấy cách của bạn khó maintain hơn đấy, vì cùng 1 file nên code rất dài. Cách của bạn theo mình thấy thì khi load trang sẽ chậm hơn bởi vì call 2 api cùng 1 lúc có khi dẫn tới bất đồng bộ, nếu làm theo cách của mình ví dụ product của bạn không có các sản phẩm liên quan thì sẽ không cần phải call api ở bên ProductRelated
Thanks bạn Duy, Mình chưa từng làm rails và ruby nhưng giờ có job mới về maintenance đang sử dụng rails, ruby cùng với postgres, redis và sidekiq. Source code hiện tại theo mình nghĩ đã full configure cho local run. Nhưng mình không thể thiết lập được môi trường để run nó locally. Ban đầu khi chưa biết về docker compose, mình định install tất cả components lên máy mình (windows 10). Nhưng khi thấy được Dockerfile and docker-compose.yml trong source code, mình thử tìm hiểu và đi đến bài viết của bạn. Tuy nhiên sau khi minh install docker and run command docker-compose up, nó báo lổi này: ERROR: An invalid argument was supplied. Nếu run với command: docker-command build, sau một thời gian lâu download packages, nhưng lại failed với lỗi này: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease Unable to find expected entry 'main/binary-amd64/Packages' in Release file (Wrong sources.list entry or malformed file) Nếu được cho mình xin email của bạn để trao đổi chi tiết hơn. Thanks bạn.