如何将数据从nodejs存储到JSON文件



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

此模块将帮助您将数据存储到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文件中,并将其保存为包含js文件的同一文件夹中的data.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)} });

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

最新更新