如何将数据从Node JS存储到JSON文件?

时间:2018-08-03 15:31:34

标签: json node.js

如何将数据从node js存储到JSON文件。如果该json文件已经有一些数据。 如何在追加模式下将数据添加到json文件...?

1 个答案:

答案 0 :(得分:-1)

此模块将帮助您将数据存储到JSON文件(创建新文件)并进行更新:

const fs = require('fs');

var lib = {};


// Create new json file
lib.create = function(dir,file,data,callback){
  // Open the file for writing
  fs.open(dir+'/'+file+'.json', 'wx', function(err, fileDescriptor){
    if(!err && fileDescriptor){
      // Convert data to string
      var stringData = JSON.stringify(data);

      // Write to file and close it
      fs.writeFile(fileDescriptor, stringData,function(err){
        if(!err){
          fs.close(fileDescriptor,function(err){
            if(!err){
              callback(false);
            } else {
              callback('Error closing new file');
            }
          });
        } else {
          callback('Error writing to new file');
        }
      });
    } else {
      callback('Could not create new file, it may already exist');
    }
  });

};

// Update data in a json file
lib.update = function(dir,file,data,callback){
  // Open the file for writing
  fs.open(dir+'/'+file+'.json', 'r+', function(err, fileDescriptor){
    if(!err && fileDescriptor){
      // Convert data to string
      var stringData = JSON.stringify(data);

      // Truncate the file
      fs.ftruncate(fileDescriptor,function(err){
        if(!err){
          // Write to file and close it
          fs.writeFile(fileDescriptor, stringData,function(err){
            if(!err){
              fs.close(fileDescriptor,function(err){
                if(!err){
                  callback(false);
                } else {
                  callback('Error closing existing file');
                }
              });
            } else {
              callback('Error writing to existing file');
            }
          });
        } else {
          callback('Error truncating file');
        }
      });
    } else {
      callback('Could not open file for updating, it may not exist yet');
    }
  });
};

module.exports = lib;

将上述代码存储到新的js文件中,然后将其作为data.js例如保存在包含js文件的同一文件夹中,然后将其导入到您的代码文件中以供使用:

const data = require('./data.js')

// Store JSON to file Example:
var jData = {'x':1, 'y':2};
data.create('./data','test1',jData ,function(err){ if(!err){console.log('file created successfully');} else{console.log(err)} });

// Update same JSON file Example:
jData.y = 5;
data.update('./data','test1',jData ,function(err){ if(!err){console.log('file updated successfully');} else{console.log(err)} });

注意:您将需要创建“ data”文件夹,其中将包含json文件或将dir参数值更改为任何现有文件夹。