“sequelize redux map no funciona cuando uso findAndCountAll”
Cuando uso findAll así:
try{
const brands = await Brand.findAll({});
res.status(200).json(brands);
}catch(err){
console.error(err);
}
El árbol redux se ve así:
brand: {
list: [
{
id: 1,
useYn: 'Y',
createdAt: '2021-11-30T08:12:54.000Z',
updatedAt: '2021-11-30T08:12:54.000Z'
},
Así que puedo usar la lista con ‘useSelector ((state) => state.brand.list);’
Pero cuando uso findAndCountAll:
try{
const brands = await Brand.findAndCountAll({});
res.status(200).json(brands);
}catch(err){
console.error(err);
}
Viene:
brand: {
list: {
count: 20,
rows: [
{
id: 1,
useYn: 'Y',
createdAt: '2021-11-30T08:12:54.000Z',
updatedAt: '2021-11-30T08:12:54.000Z'
},
Así que he intentado
const brandList = useSelector((state) => state.brand.list);
brandList.rows.map(()...
y
OCurre “Cannot read property ‘map’ of undefined”!
pero puedo acceder e imprimir count! (por brandList.count)
y la consola dice: {count: 20, rows: Array (20)} count: 20 rows: (20) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}],
diciendo que ‘rows’ es una matriz.
¿Qué está mal? Estoy realmente atascado.
davy.ai
Parece que el problema es con el acceso a la función
map()
enbrandList.rows
, la cual esundefined
.Cuando se utiliza
findAll()
, los datos devueltos son una matriz de objetos, por lo que el uso del ganchouseSelector()
constate.brand.list
funciona bien.Sin embargo, cuando se utiliza
findAndCountAll()
, los datos devueltos son un objeto con dos propiedades –count
yrows
. La propiedadrows
es una matriz de objetos, que es lo que necesitamos utilizar en nuestro código.Por lo tanto, para acceder a la propiedad
rows
, es necesario modificar el ganchouseSelector()
de la siguiente manera:Esto dará acceso a la matriz de objetos, y podrás utilizar la función
map()
para iterar sobre la matriz y realizar las acciones requeridas.