I can render my page just once. After refreshing the page, i am getting an error as cant find data from api. Please let me know my mistake

I use useEffect to call api to fetch data. Data contains 10 arrays sets. In section = container, i fetched required data to specific section (layout done through css) . i can fetch data only once, after refreshing, error showing “cant found data”. Please let me know my mistake

function App() {
    
      const [posts, setPosts] = useState([])
      const url = 'https://api.tvmaze.com/search/shows?q=all';
    
      useEffect(() => {
        fetch(url).then(resp => resp.json())    //api call
          .then(resp => setPosts(resp))
      }, []);
    
    
      return (
        <div class="App">
          
          <header class="App-header">
            <h1>WELCOME TO ZENERSPACE CINEMAS!!</h1>
          </header>
        
          {console.log(posts)}
         
          <div class="container-fluid">
            <section id="container">
    
              <div>
                <img src={myImg1} alt="" />   // fetching data from api call
                <a href={posts[0].show.url}>{`${posts[0].show.name}`} </a>
                <button type="button" class="btn btn-danger btn-md mx-auto"><Link to="/Home">Show more details</Link></button>
              </div>
              <div>
                <img src={myImg2} alt="" />
                <a href={posts[1].show.url}>{`${posts[1].show.name}`} </a>
                <button type="button" class="btn btn-danger btn-md mx-auto">Show more details</button>
              </div>
              <div>
                <img src={myImg3} alt="" />
                <a href={posts[2].show.url}>{`${posts[2].show.name}`} </a>
                <button type="button" class="btn btn-danger btn-md mx-auto"
                > Show more details
                </button>
              </div>
              <div>
                <img src={myImg4} alt="" />
                <a href={posts[3].show.url}>{`${posts[3].show.name}`} </a>
                <button type="button" class="btn btn-danger btn-md mx-auto">Show more details</button>
              </div>
              <div>
                <img src={myImg5} alt="" />
                <a href={posts[4].show.url}>{`${posts[4].show.name}`} </a>
                <button type="button" class="btn btn-danger btn-md mx-auto">Show more details</button>
              </div>
              <div>
                <img src={myImg6} alt="" />
                <a href={posts[5].show.url}>{`${posts[5].show.name}`} </a>
                <button type="button" class="btn btn-danger btn-md mx-auto">Show more details</button>
              </div>
              <div>
                <img src={myImg7} alt="" />
                <a href={posts[6].show.url}>{`${posts[6].show.name}`} </a>
                <button type="button" class="btn btn-danger btn-md mx-auto">Show more details</button>
              </div>
              <div>
                <img src={myImg8} alt="" />
                <a href={posts[7].show.url}>{`${posts[7].show.name}`} </a>
                <button type="button" class="btn btn-danger btn-md mx-auto">Show more details</button>
              </div>
              <div>
                <img src={myImg9} alt="" />
                <a href={posts[8].show.url}>{`${posts[8].show.name}`} </a>
                <button type="button" class="btn btn-danger btn-md mx-auto">Show more details</button>
              </div>
              <div>
                <img src={myImg10} alt="" />
                <a href={posts[9].show.url}>{`${posts[9].show.name}`} </a>
                <button type="button" class="btn btn-danger btn-md mx-auto">Show more details</button>
              </div>
            </section>
    
          </div>
    
          <script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossOrigin="anonymous"></script>
          <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossOrigin="anonymous"></script>
    
        </div>
    
      );
    }
    
    export default App;

How to trigger native screenshot function of iOS and Android thru Javascript?

I am currently working on an Ionic Vue App and want to take a screenshot of the entire page. Since I have multiple canvases with different context types on the screen, famous libs like ‘html2canvas’ do not work for me. The cordova plugin also was no success for me sadly.

Is there a way to trigger the native screenshot function of a device thru JS? The taskbar at the top as well as buttons at the bottom are allowed to be visible on the screenshot.

My app is not designed to be used on PC, so I do not have to worry about this paltform.

Typescript error 1005. ‘:’ expected when trying to access returned JSON data

I’m returning data from an API call. The returned JSON looks like this:

{
    "data": {
        "getAccountDetails": {
            "cars": [
                {
                    "rental": true,
                    "id": "abcdefg"                    
                }
            ]
        }
    }
}

I’m trying to console log the boolean rental (true or false). I keep getting this typescript error: ':' expected. ts(1005. This is how I’m console logging:

console.log(data?.getThermostatDetails?.thermostats?[0]);

How can I resolve this error?

Get request return same data (doesn’t refresh database)

I am using the SLIM 3.9 framework as an API and as a client a web page in javascript. I have the following problem, when I insert new information from the client side to the database, the record is created correctly at the mysql level, but when I try to consult it at the javascript level, it does not return the last inserted record, it seems that the browser caches the GET request. I have tried to pass in the NO-CACHE header but without success. Does anyone know what could be going on? By the way, if I change the method to POST I have no problem, but with GET it seems that a type of cache is created. Can anyone help me. Thanks

My Javascript method:

getLastRegister(){
    
 var myHeaders = new Headers();
myHeaders.append('pragma', 'no-cache');
myHeaders.append('cache-control', 'no-cache');  

    
return new Promise((resolve, reject) => {    
    
 let self = this;    
 
 let month = ""
 let year = ""
    
    
fetch('/xxxxxx/api/xxxxxxx/getLastRegister', {
  method: 'GET',
  headers: myHeaders 
})
  .then(response => response.json())
  .then(data => {
      
      
      if(data.success){
      


      data.data.forEach((e)=>{

        console.log(e);
    
        month = e.month;
        year = e.Year;
            
          
          
      });
      
    resolve({year:year, month:month})
    
      }
      else{
          
          
    self.alertError.customMsg.innerHTML = 'A error was ocurred: '+data.message;
    self.alertError.show(); 
    
     console.error('Error:', data.message);

     reject(data.message);

          
      }

      
  })    
  .catch((error) => {
    
  self.alertError.customMsg.innerHTML = error;
  self.alertError.show();  
 
  console.error('Error:', error);
  
  reject(error);
  
});
    
    
});    
    
    
}

Getting data from a promise as result of a firestore database call

I am trying to fetch data from my firestore database and then use the returned array of objects into my template.
What I expected to be an array of objects is in fact a promise. and I can’t seem to figure out how to extract it’s data.

Here is the function that that does two calls to my firestore database, then combines both results into an array. The func returns this array.

async getOtherArticles (src, target){
    try {
        var tempArticles = []
        const q = query(collection(projectFirestore, "database")
        ,where('target', '==', target)
        ,where('src','==',src));
        const docs = await getDocs(q);
                    
        if(docs){
            docs.forEach((doc) => { tempArticles.push(doc.data()) })
        }
                    

         const q2 = query(collection(projectFirestore, "database")
         ,where('target', '==', src)
         ,where('src','==',target));
         const docs2 = await getDocs(q2);
         if(docs2){
             docs2.forEach((doc2) => { tempArticles.push(doc2.data()) })
         }
         return tempArticles
                    
     } catch (err) {
         throw new Error(err.message) 
     }
 }

Then I simply call the previous func in order to it’s result as in the example below

this.similarArticles = this.getOtherArticles(this.drawerLinkData.src,this.drawerLinkData.target).then( function(val){return val})

When I console.log the result, I get :

Promise {<pending>}
[[Prototype]]: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: Array(1)
0: {region: Array(1), technology: Array(1), target: 'Yandex', video: '', summary: '<p>Yandex announced that it has entered into a bin…rship in the business.</strong></p>n<p>&nbsp;</p>', …}
length: 1
[[Prototype]]: Array(0)

I wish to get only what is in [[PromiseResult]]. How can I achieve this?

Issue with props, getting undefined in Vuejs?

A.vue

<script>
  import {pathdata} from "../../assets/pathdata";
data() {
    return {
      pathdata: [],
    };
  },
  mounted() {
    pathdata().then((r) => {
      this.matchingData = r.data;
    });
  },
}
  </script>

List.vue

<template>
  <div>
    <div v-if="matchingData.length > 0" class="line">
      <div
        v-for="match in matchingData"
        :key="match.PipelineID"
        :class="{
          green: match.OverallStatus === 'healthy',
          red: match.OverallStatus === 'down',
        }"
      >
        {{ match.OverallStatus }}
      </div>
    </div>
    <div v-else><p>No matching data</p></div>
  </div>
</template>
<script>
export default {
  components: {},
  props: {
    data: {
      type: Array,
      required: true,
    },
    SourceDatabaseName: {
      type: String,
      required: true,
    },
  },
  data: function () {
    return {};
  },
  methods: {},
  computed: {
    matchingData() {
      return this.data.filter(
        (a) => (a.SourceDatabaseName === this.SourceDatabaseName)
      );
    },
  },
};
</script>

Error:-
matchingData:Cannot read properties of undefined (reading ‘filter’)

Vue Dev Tools screenshoot:-

enter image description here

As you can see in List.vue component, i have props which consists of data and sourcedatabasename….. Where i am able to get the sourcedatabasename but data is data:undefined.

and also minly in computed property, because data is undefined, filter also not working and throwing error as matchingData:Cannot read properties of undefined (reading ‘filter’)

Can you please help me out why it is getting as undefined?? Thanks.

How to open eml file with attachement in outlook with javascript recieved from backend?

I recieve a eml like this from the backend :

    To: to
Message-ID: <-870410845.53.1646749975436.JavaMail.Administrator@belnbdev>
Subject: subject
MIME-Version: 1.0
Content-Type: multipart/mixed; 
    boundary="----=_Part_52_541745725.1646749975436"

------=_Part_52_541745725.1646749975436
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

body
------=_Part_52_541745725.1646749975436
Content-Type: application/octet-stream; name=Attachement
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=Attachement

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
------=_Part_52_541745725.1646749975436--

I’m trying to open it like this in outlook with javascript

ex.replace('body','<html><body>');
                ex += '</body></html>';
                var encodedUri = encodeURI(ex); //encode spaces etc like a url
                var a = document.createElement('a'); //make a link in document
                var linkText = document.createTextNode("fileLink");
                a.appendChild(linkText);
                a.href = encodedUri;
                a.id = 'fileLink';
                a.download = 'download.eml';
                a.style = "display:none;"; //hidden link
                document.body.appendChild(a);
                document.getElementById('fileLink').click();

But it gives me the error

Failed to launch 'from:%20from%0D%0ATo:%20to%0D%0AMessage-ID:%20%3C-870410845.53.1646749975436.JavaMail.Administrator@belnbdev%3E%0D%0ASubject:%20subject%0D%0AMIME-Version:%201.0%0D%0AContent-Type:%20multipart/mixed;%20%0D%0A%09boundary=%22----=_Part_52_541745725.1646749975436%22%0D%0A%0D%0A------=_Part_52_541745725.1646749975436%0D%0AContent-Type:%20text/plain;%20charset=us-ascii%0D%0AContent-Transfer-Encoding:%207bit%0D%0A%0D%0Abody%0D%0A------=_Part_52_541745725.1646749975436%0D%0AContent-Type:%20application/octet-stream;%20name=Attachement%0D%0AContent-Transfer-Encoding:%20base64%0D%0AContent-Disposition:%20attachment;%20filename=Attachement%0D%0A%0D%0AiVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAA+VBMVEX///8LVlGbqisAUk5MeXbg%0D%0A48CTow4ATEiaqScAU0yksT+sulZAeHOdsrAjaGGhrijt8/PN06MAUlMATUYATkoAVVL4+vAAUFMA%0D%0ASELS3d4AUEm4w3GuxMEATEMhYl75/P2kvLotaUmVqR1Ac0Tw8+CSogJbhIFoiodvko56m5eIpKHf%0D%0A6OdXh4BId3Q2b2jC0s+/z89lk40AQT0qZ2QubGMuaGerwr5tkpM4dHQAWU8WXk1EelW2yrYaYDgz%0D%0AakcjY0lhiXearlqEnitUfzxniDt1kTp9mTTj58nJ1LxehCfDz4mBnSK8x39QekHK1JtBcUaWsIOq%0D%0AuVHe4sMXNrpuAAAGhklEQVR4nO2Xa1/aSBSHc1FI8IYkXAQBjUAV6q3d2oXtli4qbq2l237/D7MT%0D%0AVEjmnJkkyv5+++L/9EVbMpk5T2bmnBnDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAkJKr0zUFvd6b45P+1v7eoKjr4FLu4PSt3KTY4wY5fds2imf0981zdpw+%0D%0A6eOMbyizVbNVuG7dr3tezWudHl8NVB1s+tJr/rbcpJfnum/uiUdr8tvi/R43TLElt6tvt9MZ5s1k%0D%0A3Lpnv9/ip3LTlRqXZcOtJtdnbT98dl6jT5rcQPskTm8rlWA6wxDbe/eGm8hEw3NW0Os/Pj2VX1eE%0D%0AvkbbaTfPCwwFrndCe00yLLo0NtOsP2/WfTqJbouGOSDN/JN0gpkMxedt7WU13LSZftzW8x5qt+jz%0D%0AGhnE6NflRnVlZniVoek297MZ9j2mF9tehrdFG9SPSZhE0CYZe0WGIg8cZDFkFqHAi+R5ZhXbQ3kz%0D%0AXJDPwMzzqgzN2kV6w4HP9ZCPpZJjMj+mJy+UNXkp22dpBTlDrzan6dW5HGG68SSmM2xvc5swfxmL%0D%0AYPCODiGVxAEJpCZ/g0yG53tzLg6OP9g+I+nHtoDO8JKbQntTCuEtk2viaYRsZruVrtrzhm5kigb9%0D%0AMl1DZjN6XNIYsqXe3pY3GVP1/X60Qfu9/A3yKat9smF4pqTj29FFpDbc4wTdOk0RZ0yu0X8Ckope%0D%0AYSiWCOm/HF1ESsOiy21CUm0EV/QjxtJZTx6CKSevMTROSKqOLiKlIcl/88j7BqXdKsvtosukSNZC%0D%0APm21T2lIA7AjBUFl2OfKEH9vMPo0I/nLKEiI9loGwTSGxgGZRG/ZRmFIa7TJZZlHirRx/mDxdFv+%0D%0AwLV0F8MMhm2yTCKHEt5w4JOFF3atWl206i9L+jkpFb9lEUxlaPTkACIXHNaw/YE7LKi/Pb06uN5z%0D%0Azn0j7+fm1eoNScWtL68uT4auWX7CFpefj3nxj1Jp/v9lZJoiRq9/z7ej4lCOL0O1T214RRbKMmP8%0D%0AXipVq9WSORyNRuPx+PDw8A/j05+fxd/jkNFwWBItwka6FH9BC0b5UeRA3iIel45fa/g0frlUtcXE%0D%0AmMPh+Mvi2V+TiRVYOxEKRmVHwnGsb9/WdXHQqp/f5x/YGap9esN31dJwNP58dH1zOxVG1s7G4tmG%0D%0AYzlWFKdgGHddK/5b+Cd3p4lD5GtJxZ3XhD15ct2P2QTTGf79dSq0gnAuBGHEMUOLGBr3gUVwgoo6%0D%0AjmI5XMuxBFwLAzmW80wtS7VPbbibc+IeQSPBkP4cPvmpCWT27fbm++HQLM0TVBhIuOHa8hSSm0lm%0D%0AQ5ECqeGDPCPBQ5Jhx6KKjtMgXS+odJ1wx06mwnNkhpphUiaHDen+nc1wKDotj49u6FoqyNEGsyRD%0D%0AYz1HJ9HKzUjfCxqPn9ERWcua3F7/GNvVC+NMWqQZ7vaSYbgLhkc3U3a3dLok0mVeVBkaD5xiV51Q%0D%0Ao6M4YWqaTP8Z+KLORA29g+yGvumKTsbfbyfzpC46J4YNsuBynWRDOvNzxY7cu66nRjC5ORq5y3ND%0D%0AK2OpCA2rw8Prud3i88mGd2QyHEsb19OTTsAYOgVlQmXWdSDmcscJLcONKd/90/Hp6yTYiQZJDDt0%0D%0ALqIZQ21orJPVbcUKjQw76fOQdqzpzY9ytexnLRVGWAhId3FDRjC6DXWGNAfPX34wFJBYor2KaZge%0D%0AXapefblhZdZlsn5kkWoN+VlRJtSKo5jE58i6ulPRSwwrdw9WYs7XGna419XHt3vNJFoJJ4b0hmKT%0D%0APbJRcHIB91EdKzrLWkNjl9uKlqVIqBW9oabUZDK0nAX8QMFutAO94XMdl5soEiqtS8qOX2OYQBA/%0D%0AeiUYVvitqEiotDBFX9rlX1q1YSBthgRDcZFiC/89Hw53YF+guZqs0LArH56TDI0ZO0KO31Psafap%0D%0AX8VHWa2hE5CVkmjIb0Ur4BOqqurHTor/mWGQa9BRkg35rahYdMp4dDev1Rg6ue4Gt7KSDRX5g69u%0D%0AyoLxomqf0lCUjVwuV7jnV0kKQ2MWcP3yxzf2pKc9ziYZdnMaxEPHKmw0ZuvKTfBT7qBr0UYb7Chd%0D%0A7vhW4QN6WbUP6ayr+XXXCdEn6Tvy1i8mbMUIqTp85GWlAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg/8K/PS2aBGedSCYAAAAASUVORK5CYII=%0D%0A------=_Part_52_541745725.1646749975436--%0D%0A%3C/body%3E%3C/html%3E' **because the scheme does not have a registered handler**.

How to solve the doesn’t have a registred handler error?

Or how do i have to write the javascript properly? Or should i handle the eml response differently?

Thanks in advance

How can I console.log the last value from a for loop?

I am trying to get the last value from a for loop. I have tried a number of things including pop() and lastchild but all I get is the “This is not a function” error. Can someone offer any help with this?

  var totalAppointments =  Array.from(recordXmlNode.children[1].innerHTML);

  var numberAppointments = totalAppointments.map(Number);


  for (let i = 0; i < numberAppointments.length; i++) {
       sum += numberAppointments[i];
  }

  console.log(sum);

Thanks

possible to use variable variables to reference the real object stored as a reference in JSON from a nodejs function

Is it possible to use variable variables in JS so that a JSON config file can be used to set the required object name and be accessed by a function?

take the following POST express code

//form passed to express has a field
req.body = {"myFieldA":"hello","myFieldB":"world"}

// store that as a reference in a JSON config file
config.js
{
   myFields:{
     alpha:"req.body.myFieldA",
     beta: "req.body.myFieldB"
   }
 }


//in server.js access the object by the JSON reference
import config from './config.js';
myVal = config.myFields.alpha;

// myval should now = "hello"

How to save afterSaveCell in react bootstrap save to database

I am using react-bootstrap-table-next to implement crud functionalities. I need a situation whereby after the inline editing is done the data is saved to the database. Right now, after reloading the page the data-table returns back to its initial state.

These are my codes below

const

   const [data, setData] = useState([]);
   const apiUrl = 'api/terminals';

cellEdit-block

   const cellEdit = cellEditFactory({
   mode: 'dbclick',
   blurToSave: true,
   afterSaveCell: onAfterSaveCell,
   }); 

api call

const onAfterSaveCell = (value, name) => {
axios({
method: 'POST',
url: apiUrl,
headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
  },
  data: {
    name: value[name],
  },
  }).then(response => {
  setData(response);
});
};

jsx

 <>
    <BootstrapTable
    keyField="id"
    data={data}
    columns={columns}
    striped
    hover
    condensed
    pagination={paginationFactory()}
    cellEdit={cellEdit}
    filter={filterFactory()}
    noDataIndication="Table is Empty"
    
  />
 </>

I get these errors on the console when I try this formula

   react.development.js:220 Warning: Failed prop type: Invalid prop `data` of type `object` 
   supplied to `DataProvider`, expected `array`.

confused about scoping rules in the functions [duplicate]

I have just decided to learn the programming concept of javascript. And I can’t skip the parts which i dont understand while im learning something.

I was reading this page and trying to understand difference between var and let; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

After the read the scoping rules part, i have run those two code blocks;

function x() {
    var x = 5;
    {
        var x = 6;
        console.log("inner: " + x);
    }
    console.log("outer: " + x);
}

x();

The output was;

inner: 6
outer: 6

But in the this version;

function x() {
    var x = 5;
    function y() {
        var x = 6;
        console.log("inner: " + x);
    }
    y();
    console.log("outer: " + x);
}

x();

The output was;

inner: 6
outer: 5

Im just wondering which language concept causes this difference? In the both code, { } and function y() are in the function x() scope. Isnt it? What am i missing?

TypeError: Cannot read properties of null (reading ‘concat’)

if (ctrl.initialized.MedicalHistoryForms) {
  var clonedList = _.cloneDeep($scope.timelineRecords);
  clonedList = ctrl.resetItemsInTimeLine(ctrl.medicalHistoryForms, clonedList, 'MedicalHx', 'FormAnswersId');
  $scope.timelineRecords = clonedList;
} else {
  $scope.timelineRecords = $scope.timelineRecords.concat(ctrl.medicalHistoryForms);
  ctrl.initialized.MedicalHistoryForms = true;
}

Redirecting script on webpage with delay location.redirect not working javascript

This is in script tag in my base html

 const arraypathname = [`array of paths`]

 var i = 0; 

```
this function loops array of paths and should redirect on every path url from array  with delay
```

function redirectFunc(){
  setTimeout(function() {  
    var path_to_redirect = arraypathname[i];
    window.location.redirect(path_to_redirect);
    
        ```
this doesn work when i used alert() with path it work and every 3 sec i get alert with different path. Why windows.location.replace not working?
        ```
    i++;             
    if (i < 10) {         
      redirectFunc();      
    }                      
  }, 3000)
  
}

```
i have a base.html file witch is used on every page on my site and i want to do presentation script witch will loop through all paths on web with delay
```

i dont now why its not working like that when i used alert(path_to_redirect) every
3 seconds it alert me with url