Estoy usando el nodo js y mi requisito es guardar los valores del formulario HTML que envía el usuario y almacenar esos valores en un archivo de texto usando el nodo js, y cada vez que los datos deben guardarse en las siguientes líneas en lugar de guardarse en la misma línea. Me quedé atascado como hacer este proceso.
Código HTML:
<form method="POST" action="/users/contact"> <select name="car" size="1" required id="rankx"> <option value="" selected disabled hidden>Option</option> <option value="volvo">volvo</option> <option value="swift">swift</option> </select> <br /> <select name="model" size="1" required> <option value="" selected disabled hidden>Rank</option> <option value="c500">c500</option> <option value="Ta66">Ta66</option> </select> <input type="submit" value="Submit" name="submit" id="submit"/>
Código del nodo js:
var express = require('express'); var fs = require ('fs'); router.post("/contact",function(req,res){ let car = req.body.car; let model = req.body.model; var form_data = { car: car, model: model } fs.appendFileSync('./message.txt',form_data.toString()); });
Salida requerida: // almacenar en archivo de texto userData.txt id carname carmodel 1 abc abc_1 2 xyz xyz_1
La solución que me pasó fue primero crear un archivo JSON para guardar los datos y luego poner esta información en un archivo de texto. Siguiendo cuatro pasos:
Paso 1: Primero necesita leer los datos existentes del archivo JSON.
Paso 2: Agregue un auto nuevo usando el método push.
Paso 3: escribe los datos nuevos y antiguos en un archivo JSON.
Paso 4: escribe la nueva información en un archivo de texto.
Aquí está el código:
aplicación.js
const express = require('express'); const app =express() var fs = require ('fs'); // middleware app.use(express.urlencoded({extended:true})) // STEP 1: Read the existing data from json file let users= require("./message.json") // API routes app.get('/', (req, res) => { res.sendFile(__dirname + '/public/index.html'); }) app.post("/",function(req,res){ let car = req.body.car; let model = req.body.model; // new car let formData = { car: car, model: model } res.send(formData) // STEP 2: add new user data to users object using push method users.push(formData) // STEP 3: Writing data in a JSON file fs.writeFile('message.json', JSON.stringify(users), err =>{ if(err) throw err console.log("Done writting JSON file") }) // STEP 4: Write the new info in the text file named message fs.writeFile('./message.txt',JSON.stringify(users), err =>{ if(err) throw err console.log("Done writting text file") }); }); app.listen(3000, function(){ console.log("server started on port 3000") })
Necesita crear un archivo JSON para guardar datos como este:
mensaje.json
[]
y un mensaje.txt vacío para almacenar los datos, este archivo se sobrescribe cuando se guardan los datos.
Deja capturas de pantalla. Espero ayudarte.