Home > Software design >  How to store continuous scale data in database
How to store continuous scale data in database

Time:08-03

I have a very simple nodejs server (using Express) running locally on port 8000.
Using the npm package serialport I managed to connect to a scale and get it's weight in a continuously mode like so.

terminal output..

0 
10 
20 
30 
50 
50 stable
50 stable
...

I want to save the scale stable weight to a database (in my case MongoDB Atlas) but I don't want to make hundreds of requests as the scale weight changes.

I know tools like RxJS and one of it's operators distictUntilChange but I'm not using any client.

How this can be done working only with a server ?

CodePudding user response:

Since you haven't shown any code, here's a conceptual answer, which assumes that your readings are coming from an async iterator and that you already have a function for uploading each weight value. In this example, the weight property of each reading is a number and the stable property of each reading is a nullish boolean.

async function uploadLoop (scaleReaderIterator, uploadWeight) {
  let previousWeight;

  for await (const {weight, stable} of scaleReaderIterator) {
    if (
      !stable || // the weight reading isn't stable, OR
      weight === previousWeight // the weight hasn't changed since last time
    ) continue; // don't do anything else in this code block
    // else

    // update the previous value
    previousWeight = weight;
    // upload it
    uploadWeight(weight);
  } // loop
}
  • Related