在Ubuntu系统中,使用Node.js实现数据持久化通常涉及以下几种方法:
文件系统存储:
fs模块来读写文件。const fs = require('fs');
// 写入数据到文件
fs.writeFile('data.json', JSON.stringify({ name: 'Alice', age: 25 }), (err) => {
if (err) throw err;
console.log('Data saved!');
});
// 从文件读取数据
fs.readFile('data.json', 'utf8', (err, data) => {
if (err) throw err;
console.log(JSON.parse(data));
});
数据库:
MySQL示例:
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'user',
password: 'password',
database: 'mydatabase'
});
connection.connect();
// 插入数据
connection.query('INSERT INTO users SET ?', { name: 'Alice', age: 25 }, (err, result) => {
if (err) throw err;
console.log('User inserted!');
});
// 查询数据
connection.query('SELECT * FROM users', (err, results) => {
if (err) throw err;
console.log(results);
});
connection.end();
MongoDB示例:
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
const dbName = 'mydatabase';
MongoClient.connect(url, (err, client) => {
if (err) throw err;
const db = client.db(dbName);
const collection = db.collection('users');
// 插入数据
collection.insertOne({ name: 'Alice', age: 25 }, (err, result) => {
if (err) throw err;
console.log('User inserted!');
});
// 查询数据
collection.find({}).toArray((err, docs) => {
if (err) throw err;
console.log(docs);
});
client.close();
});
缓存系统:
Redis示例:
const redis = require('redis');
const client = redis.createClient();
client.on('error', (err) => console.log('Error ' + err));
// 设置数据
client.set('name', 'Alice', (err, reply) => {
if (err) throw err;
console.log(reply);
});
// 获取数据
client.get('name', (err, reply) => {
if (err) throw err;
console.log(reply);
});
事件驱动存储:
const EventEmitter = require('events');
class DataStore extends EventEmitter {
constructor() {
super();
this.data = {};
}
save(key, value) {
this.data[key] = value;
this.emit('dataSaved', key, value);
}
get(key) {
return this.data[key];
}
}
const store = new DataStore();
store.on('dataSaved', (key, value) => {
fs.writeFile(`data/${key}.json`, JSON.stringify(value), (err) => {
if (err) throw err;
console.log(`Data for ${key} saved!`);
});
});
store.save('name', { name: 'Alice', age: 25 });
console.log(store.get('name'));
选择哪种方法取决于具体的应用场景和需求。对于简单的应用,文件系统存储可能已经足够;而对于复杂的应用,可能需要使用数据库或缓存系统来管理数据。