ở bảng products (chứa danh sách sản phẩm), a để thêm 1 trường category_id (khóa ngoại đến id của danh mục sản phẩm) thì khi truy vấn a dùng 1 query sẽ tối ưu và trả về danh sách sản phẩm tương ứng với từng danh mục
//Lấy dữ liệu từ form Edit và gán vào stateisChange=(event)=>{const name = event.target.name;const value = event.target.value;this.setState({[name]: value});}
Nhưng mà ở hàm onChange này thì bạn mới chỉ làm thay đổi state nội bộ, chưa thấy có gọi đến action thay đổi store.
Còn ở render thì bạn vẫn dùng prop (lấy từ store).
Có vẻ là vấn đề ở đây.
à chuẩn rồi bro =)) mình nhớ có 1 trường hợp vẫn dùng được cái mapping port kia nhưng ko tính là giao tiếp giữa container vì là run outside the container. (nhớ nhầm sang trường hợp đó nên phản pháo ngay =)) )
đúng là phải có 1 cái để ánh xạ chung thì các container mới giao tiếp được với nhau, thank bro vì góp ý nhé. để mình edit lại đoạn đầu bài viết :v lú quá :v
Cám ơn bạn đã theo dõi, có nhiều thứ mình muốn chia sẻ nhưng chưa nghĩ ra chủ đề phù hợp để viết, nhưng chắc sẽ có docker,server, ci/cd nhé, vì đấy cũng là món mình rất thích
về việc dùng debugger thay vì console.log mình không có ý kiến gì , tùy vào việc cái nào tiện cho bạn hơn và bạn thấy nó có ích hơn. Mình thì vẫn dùng console.log vì đôi khi code NodeJS debug trên terminal khá nhanh và tiện. Còn nếu bạn muốn dùng debugger thì cũng rất ok vì sẽ có được thông tin chi tiết hơn . Ở trong bài mình cũng code note cho các bạn là xóa console.log trước khi commit, vì thực sự mình cũng khá bị đau mắt khi đọc code người khác mà toàn console.log
khi mình install thì bị lỗi này Unable to locate publishable resources. và đăng nhập thì báo lỗi These credentials do not match our records.
ai biết cách fix chỉ mình với
thanks
Mình đọc nãy giờ mà chưa hiểu lắm. File store của mình thế này, giờ sửa lại như nào bạn.
//ĐÂY LÀ FILE store.js
import * as firebase from 'firebase';
import {gymData} from './firebaseConnect';
//Khai báo biến redux
let redux = require('redux');
//Khai báo reducer
const allReducerInitialState = {
editData:{},
}
const allReducer = (state = allReducerInitialState, action) => {
switch (action.type) {
case "ADD_DATA":
let ketnoi1 = firebase.database().ref('dataForGym');
ketnoi1.push(action.customer);
console.log("Thêm dữ liệu thành công!");
return state
case "GET_DATA"://Lấy dữ liệu đưa qua store khi bấm vào nút Edit
return {...state,editData:action.getOneRow}
case "GET_EDIT_DATA"://Lấy dữ liệu ĐÃ SỬA đưa qua store và update lên firebase
let ketnoi2 = firebase.database().ref('dataForGym');
ketnoi2.child(action.sendEditData.id).update({
fullname:action.sendEditData.fullname,
email:action.sendEditData.email,
phonenumber:action.sendEditData.phonenumber,
birthday:action.sendEditData.birthday,
homeaddress:action.sendEditData.homeaddress,
registrationdate:action.sendEditData.registrationdate,
expirydate:action.sendEditData.expirydate
})
console.log("Cap nhat thanh cong!");
return {...state,editData:{}} //update xong thì gán về rỗng
default:
return state
}
}
//Khai báo store
let store = redux.createStore(allReducer);
//theo dõi state của store, thay đổi thì in ra màn hình
store.subscribe(function(){
console.log(JSON.stringify(store.getState()));
})
export default store;
THẢO LUẬN
ở bảng products (chứa danh sách sản phẩm), a để thêm 1 trường
category_id(khóa ngoại đến id của danh mục sản phẩm) thì khi truy vấn a dùng 1 query sẽ tối ưu và trả về danh sách sản phẩm tương ứng với từng danh mục@buihieubthc2rb : uh, bạn dành thời gian ra xem giúp là mình cũng trân trọng rồi. Cảm ơn bạn hiền nhe.
@DatB Cảm ơn bạn đã quan tâm bài viết của mình nhé
@quocdungabc có vẻ là mình cũng chưa hiểu code trên nhiều nên không thể giúp bạn giải quyết
Cảm ơn tác giả nhé

Rất mong có thể đọc thêm được nhiều bài của bác nữa
Anh ơi khi nào có thời gian anh viết lách tiếp cho chúng em được học nhé (y) Bài hay và dễ hiểu quá anh (y)
Mình có 2 cái request API là
Đức cho mình hỏi là có dùng 2 cái này lồng vào nhau dc ko? Hay phải viết riêng 1 cái Lấy danh sách sản phẩm theo list danh mục?
@buihieubthc2rb ah action của mình nè:
Lúc này mới gửi qua store, mà mình bị kẹt ở bước lấy nên chưa gửi qua được. (Phải bấm nút Save thì action này mới thực thi)
"Để có sử dụng ta phải đăng ký nó trong function bool() của AppServiceProvider". Này là boot() hả tác giả hay tạo 1 cái bool() ?!
@quocdungabc
Nhưng mà ở hàm onChange này thì bạn mới chỉ làm thay đổi state nội bộ, chưa thấy có gọi đến action thay đổi store. Còn ở render thì bạn vẫn dùng prop (lấy từ store). Có vẻ là vấn đề ở đây.
async await với promise call back nó đều có ưu nhược điểm riêng, ko cái nào replace được cái nào cả.
à chuẩn rồi bro =)) mình nhớ có 1 trường hợp vẫn dùng được cái mapping port kia nhưng ko tính là giao tiếp giữa container vì là run outside the container. (nhớ nhầm sang trường hợp đó nên phản pháo ngay =)) ) đúng là phải có 1 cái để ánh xạ chung thì các container mới giao tiếp được với nhau, thank bro vì góp ý nhé. để mình edit lại đoạn đầu bài viết :v lú quá :v
mình dùng tài khoản mặc định thì nó báo lỗi như trên
a cũng chúc e thành công nhiều hơn thế
Cám ơn bạn đã theo dõi, có nhiều thứ mình muốn chia sẻ nhưng chưa nghĩ ra chủ đề phù hợp để viết, nhưng chắc sẽ có docker,server, ci/cd nhé, vì đấy cũng là món mình rất thích
cám ơn e đã theo dõi,
về việc dùng
, tùy vào việc cái nào tiện cho bạn hơn và bạn thấy nó có ích hơn. Mình thì vẫn dùng
. Ở trong bài mình cũng code note cho các bạn là xóa console.log trước khi commit, vì thực sự mình cũng khá bị đau mắt khi đọc code người khác mà toàn console.log 
debuggerthay vìconsole.logmình không có ý kiến gìconsole.logvì đôi khi code NodeJS debug trên terminal khá nhanh và tiện. Còn nếu bạn muốn dùngdebuggerthì cũng rất ok vì sẽ có được thông tin chi tiết hơnkhi mình install thì bị lỗi này Unable to locate publishable resources. và đăng nhập thì báo lỗi These credentials do not match our records. ai biết cách fix chỉ mình với thanks
Mình đọc nãy giờ mà chưa hiểu lắm. File store của mình thế này, giờ sửa lại như nào bạn.