adding a property to an object that is part of a sequelize collection not working

Viewed 66

I have I similar code to this and I can add a property but here it doesn't it's uninexplicable.

router.get('/', async (req, res, next)  => {

  let produtos = await produto.findAll();


  
  for(let i = 0; i < produtos.length; i++){
    console.log("entrou");
    if(produtos[i].diretorioFotos != null)
    {
     fs.readdirSync('./publico/fotos/' + produtos[i].diretorioFotos).forEach(file => {
        console.log("temtemtete");
       const foto1 = 'http://localhost:3000/fotos/' + produtos[i].diretorioFotos + '/' +  file;
       produtos[i].foto1 = foto1; //the code does reach here
       console.log( produtos[i]);
    });
  }
     

  }

  res.json(produtos); // json goes without the "foto1"

});

The generated json

[{"id":27,"nome":"produto imagem ","descricao":"descrição muito descritiva","preco":"120000","diretorioFotos":"1","ean":null,"sku":"3434234","gtin":"4324234","mpn":"234234","ncm":"324234","peso":100,"altura":100,"largura":100,"comprimento":100,"linkVideo":null,"marca":null,"categoria":null,"createdAt":"2021-12-26T03:07:39.782Z","updatedAt":"2021-12-26T03:07:39.782Z"},{"id":28,"nome":"produto imagem ","descricao":"descrição muito descritiva","preco":"120000","diretorioFotos":"2","ean":null,"sku":"3434234","gtin":"4324234","mpn":"234234","ncm":"324234","peso":100,"altura":100,"largura":100,"comprimento":100,"linkVideo":null,"marca":null,"categoria":null,"createdAt":"2021-12-26T03:09:47.696Z","updatedAt":"2021-12-26T03:09:47.696Z"},{"id":29,"nome":"produto imagem ","descricao":"descrição muito descritiva","preco":"120000","diretorioFotos":"3","ean":null,"sku":"3434234","gtin":"4324234","mpn":"234234","ncm":"324234","peso":100,"altura":100,"largura":100,"comprimento":100,"linkVideo":null,"marca":null,"categoria":null,"createdAt":"2021-12-26T03:10:43.124Z","updatedAt":"2021-12-26T03:10:43.124Z"},{"id":30,"nome":"produto imagem ","descricao":"descrição muito descritiva","preco":"120000","diretorioFotos":"4","ean":null,"sku":"3434234","gtin":"4324234","mpn":"234234","ncm":"324234","peso":100,"altura":100,"largura":100,"comprimento":100,"linkVideo":null,"marca":null,"categoria":null,"createdAt":"2021-12-26T03:11:12.579Z","updatedAt":"2021-12-26T03:11:12.579Z"},{"id":31,"nome":"produto imagem ","descricao":"descrição muito descritiva","preco":"120000","diretorioFotos":"5","ean":null,"sku":"3434234","gtin":"4324234","mpn":"234234","ncm":"324234","peso":100,"altura":100,"largura":100,"comprimento":100,"linkVideo":null,"marca":null,"categoria":null,"createdAt":"2021-12-26T03:11:31.612Z","updatedAt":"2021-12-26T03:11:31.612Z"},{"id":32,"nome":"produto imagem ","descricao":"descrição muito descritiva","preco":"120000","diretorioFotos":"6","ean":null,"sku":"3434234","gtin":"4324234","mpn":"234234","ncm":"324234","peso":100,"altura":100,"largura":100,"comprimento":100,"linkVideo":null,"marca":null,"categoria":null,"createdAt":"2021-12-26T03:12:29.874Z","updatedAt":"2021-12-26T03:12:29.874Z"},{"id":33,"nome":"produto imagem ","descricao":"descrição muito descritiva","preco":"120000","diretorioFotos":"7","ean":null,"sku":"3434234","gtin":"4324234","mpn":"234234","ncm":"324234","peso":100,"altura":100,"largura":100,"comprimento":100,"linkVideo":null,"marca":null,"categoria":null,"createdAt":"2021-12-26T03:13:25.883Z","updatedAt":"2021-12-26T03:13:25.883Z"},{"id":34,"nome":"produto imagem ","descricao":"descrição muito descritiva","preco":"120000","diretorioFotos":"8","ean":null,"sku":"3434234","gtin":"4324234","mpn":"234234","ncm":"324234","peso":100,"altura":100,"largura":100,"comprimento":100,"linkVideo":null,"marca":null,"categoria":null,"createdAt":"2021-12-26T03:15:13.790Z","updatedAt":"2021-12-26T03:15:13.790Z"},{"id":35,"nome":"ier2340932098","descricao":"descrição descritiva","preco":"190","diretorioFotos":"9","ean":null,"sku":"342343","gtin":"4234324","mpn":"234234","ncm":"32423432","peso":100,"altura":100,"largura":100,"comprimento":100,"linkVideo":null,"marca":null,"categoria":null,"createdAt":"2021-12-26T03:30:10.286Z","updatedAt":"2021-12-26T03:30:10.286Z"}]

Like I said I had a route that render a handlebars template I useI very similar code i it does work. I tried to see some difference but it doesn't have.

1 Answers

I added this to my model

fotos: {type: DataTypes.VIRTUAL},

Then this did the trick.

 router.get('/', async (req, res, next)  => {

  let produtos = await produto.findAll();



  produtos.forEach(result => {
 
    if(result.diretorioFotos != null)
    {
      result.fotos = [];
     fs.readdirSync('./publico/fotos/' + result.diretorioFotos).forEach(file => {
    
       const foto1 = 'http://localhost:3000/fotos/' + result.diretorioFotos + '/' +  file;
     
       result.fotos.push(foto1);
       console.log(result);
    });
  }
    
  });

  


  res.json(produtos);

});
Related