snaggs
snaggs

Reputation: 5713

Call nodeJS to save data in file but get empty content

I have nodeJS file that does some stuff and saves result in JSON file.

'use strict';

var Promise = require('promise');
var jsonfile = require('jsonfile'); //npm install --save jsonfile

// ...

function writeFile(filename, obj) {
    return new Promise(function (resolve, reject) {
        jsonfile.writeFile(filename, obj, {spaces: 5}, function (err, obj) {
            if (err) {
                reject(err);
            } else {
                resolve();
            }
        });
    });
}

 writeFile("test.json",{a:"xxxx"}).then(function (results) {

  })

But for some reason I get empty file.

However if I use write File Sync:

jsonfile.writeFileSync(filename, obj, {spaces: 5});

I call node as:

$ node Common/BB_validate.js

Any Ideas?

Upvotes: 1

Views: 645

Answers (1)

Perry Mitchell
Perry Mitchell

Reputation: 694

Why use jsonfile? I mean, why not use something like the following?

var fs = require("fs");
function writeFile(filename, obj) {
    return new Promise(function (resolve, reject) {
        fs.writeFile(filename, JSON.stringify(obj, undefined, 5), function (err, obj) {
            if (err) {
                return reject(err);
            }
            resolve();
        });
    });
}

JSON.stringify will convert the object to JSON for you (for storage in the file), without the need to import other libraries. When reading the file you can simply call JSON.parse(readData) to convert it back to an object.

Upvotes: 3

Related Questions