Me encontré con las operaciones de lectura y escritura usando fs en Node Js.
Mi escenario es como, tengo un archivo que tiene los datos como,
[ { "Pref":"Freedom", "ID":"5545" }, { "Pref":"Growth", "ID":"8946545" } ]Tengo que reemplazar el Pref del elemento cuyo ID es 5545 usando Node js.
Cómo puedo hacerlo. Gracias
Para hacer lo que quieres, necesitas:
fs.readFile()JSON.parse()JSON.stringify()fs.writeFile()pero esto no es tan simple como puede parecer, porque tendrás que:
Teniendo en cuenta todo eso, debería considerar usar una base de datos para almacenar cualquier dato que cambie. Algunas bases de datos como Mongo, Postgres o Redis deben ejecutarse como una aplicación independiente en el mismo servidor o en uno diferente. Algunas bases de datos integradas como SQLite no necesitan un proceso independiente y se pueden ejecutar directamente en su aplicación.
No es que sea imposible escribir en archivos JSON y luego leer esos archivos según sea necesario, pero la cantidad de trabajo que tendría que hacer para sincronizar el acceso a los datos sin bloquear accidentalmente el bucle de eventos en el proceso es mucho. más difícil que simplemente usar cualquier base de datos según lo previsto.
Tienes algunos datos:
const data = [ { "Pref":"Freedom", "ID":"5545" }, { "Pref":"Growth", "ID":"8946545" } ] Primero, debemos encontrar el elemento que desea cambiar (use [0] para seleccionar solo el primero en caso de que haya varios elementos con ID 5545:
const objectToChange = data.filter(item => item.ID === "5545")[0]¡Y luego cámbialo!
objectToChange['Pref'] = "Liberty"Podemos ver el cambio reflejado en el objeto de datos:
console.log(data) // [{ // ID: "5545", // Pref: "Liberty" // },{ // ID: "8946545", // Pref: "Growth" // }]1- Cargar archivo: let json = JSON.parse(fs.readFileSync('file.json', 'utf-8'));
2- Actualizar contenido:
json = json.map(el => { if(el.ID === "5545") { el.Pref = "TEST"; } return el; });3- ¿Guardar de nuevo tal vez?
fs.writeFileSync('test.json', JSON.stringify(json), 'utf-8');