1

So I'm trying to create a function that returns a JSON object that is read from a file, however, I don't know how to return the object from the readConfig function. I tried to create a callback function but was unable to do so. I know the function works because when I console.log(jsonData) from inside the readFile.then(), it logs the object correctly.

const fs = require('node:fs')

function readConfig() {
    fs.promises.readFile('./config.json', 'utf8')
        .then(content => {
            jsonData = JSON.parse(content, null, 2);
            return jsonData
        })
        .catch(err => {
            console.log(err);
        });
};


// This is what I want to do able to do with the readConfig function

data = readConfig()
console.log(data.value)

Any help is greatly appreciated :)

EDIT: I tried using the promise based return that was commented but would just get promises returned back.

const fs = require('node:fs')

function readConfig() {
    return fs.promises.readFile('./config.json', 'utf8')
        .then(content => {
            jsonData = JSON.parse(content, null, 2);
            return jsonData
        })
        .catch(err => {
            console.log(err);
        });
};

readConfig().then(v => v);

However this just returns back a pending promise, I want to be able to access the values of the JSON object. What I want to be able to do is; readConfig().value and access a value from the object but can't get this to work. I just want to be able to access multiple values from this object in a simple way

Eddie
  • 31
  • 5
  • 2
    Does this answer your question? [How to return the response from an asynchronous call](https://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call) – Amir MB May 17 '22 at 20:19
  • 1
    `readConfig().then(jsonData => {/* Do whatever with the data */})` is the way. Additionally, you can use this in an `async` function style: `const processData = async () => { const jsonData = await readConfig(); ... }` – Bao Huynh Lam May 17 '22 at 20:53

0 Answers0