Search code examples
javascriptnode.jsreactjsexpresscasting

pass array to backend


Here i am trying to pass array to my backend (Node.js/Express). I want to change my type of "arr" to Array but its showing the "objects". I tried Object.enteries/keys/values but couldn't able to change it.

const K_Way_Merge_Sort = async ({
    array,
    setArray,
    setColorsArray,
    visualizationSpeed,
} = {}) => {
    var JSONObject = JSON.parse(JSON.stringify(array));
    axios.post(
        'http://localhost:5000/k_way_external_merge_sort',
        {JSONObject}
        , ((data) => {
            console.log(data);
        }))
        .catch((err) => {
            console.log(err)
        })
}

export default K_Way_Merge_Sort

My Backend File is

const express = require('express');
const bodyParser = require("body-parser");
const fs = require('fs')
const { readFileSync, promises: fsPromises } = require('fs');
const app = express();
const cors = require('cors');
app.use(bodyParser.json());
app.use(express.json())
app.use(bodyParser.urlencoded({ extended: true }));
const corsOptions = {
    origin: 'http://localhost:3000',
    credentials: true,       
    optionSuccessStatus: 200
}
app.use(cors(corsOptions));

function WriteFiles(array){
    var file = fs.createWriteStream('text/input.txt');
    for (let i = 0; i < array.length; i++) {
        file.write(array[i] + '\n')
    }
    file.end();
}

app.post('/k_way_external_merge_sort',(req,res) => {
    let array = req.body.JSONObject;
    const arr = Object.values(array);
    res.send('done');
})

app.listen(5000,() => {
    console.log('running');
})

Solution

  • In Javascript, typeof an array instance is actually an 'object'. If you so want, you can still test if it's an array with arrayInstance instanceof Array, or you might want to consider Array.isArray() method; other possiblities are mentionned in this post.