Autor
|
Tema: añadir contenido en un archivo JSON externo a traves de JS con fetch() (Leído 2,485 veces)
|
Drakaris
Desconectado
Mensajes: 286
Todo lo que puedas imaginar, lo puedes crear.
|
Buenas, quisiera añadir un objecto a un JSON externo con javascript, esto es posible con el fetch() de JS o XMLHttpRequest? Es decir, yo tengo un JSON en /jon/users.json (inicialmente esta vacio) [ ]
Y en mi javascript genero un objecto que lo guardo en una variable, por ejemplo let data = { "nick": "Drakaris", "password": "d404559f602eab6fd602ac7680dacbfaadd13630335e951f097af3900e9de176b6db28512f2e000b9d04fba5133e8b1c6e8df59db3a8ab9d60be4b97cc9e81db", "pleasures": [ "romantic" ], "dateOfBirth": "2021-02-09", "gender": "female" }
y este lo quiero guardar en el JSON /json/users.json Para ello, según tengo entendido se puede hacer con el fetch() metodo POST? Algo así let data = getDataForm() //obtengo el objeto generado dinamicamente fetch("json/users.json",{ method: "POST", body: JSON.stringify(data), headers:{ "Content-type":"application/json" } }).then((result)=>result.json()) .then(dat=>console.log(dat)) .catch(err=>console.log(err));
Esto me devuelve una array vacio y cuando voy al archivo JSON no me a implementado nada. Se puede hacer lo quiero hacer? https://drive.google.com/drive/folders/1BiDcjrPZ3-8qtq9B7ps-dSIu6-neaqY-?usp=sharingGracias de antemano
|
|
|
En línea
|
Lo increible, no es lo que ves, sino como es
|
|
|
MinusFour
|
Tu servidor tendría que manejar que POST sobre la ruta json/users.json agregue el archivo JSON. No es algo que un servidor web haga por defecto.
Los servidores de object storage por lo general usan una API similar. AWS S3, MinIO, etc.
|
|
|
En línea
|
|
|
|
UnaiiM
Desconectado
Mensajes: 151
The art of programming is the skill of controlling
|
Claro que si, pero en el servidor ha de tener una manera de coger el post y sobre escribir el contenido de la base de datos por el del post: Front-end: async function postData(data) { fetch("/post", { method: 'POST', headers: {'Content-Type':'application/x-www-form-urlencoded'}, body: "data=" + JSON.stringify({user: "admin", pass: "admin"}) }).then((res) => data(res.text().then((text) => console.log(text)))); } document.querySelector("button").addEventListener("click", () => { postData((data) => console.log(data)); })
back-end: const express = require("express"); const app = express(); const fs = require("fs"); app.use(express.urlencoded()) app.route("/").get((req, res) => { res.sendFile(__dirname + "/post.html"); }) app.route("/post").post((req, res) => { let post_data = JSON.parse(req.body.data); console.log(post_data); fs.readFile(__dirname + "/bdd.json", (err, data) => { if(err)throw err; data = JSON.parse(data); data[post_data.user] = post_data.pass; fs.writeFile(__dirname + "/bdd.json", JSON.stringify(data), (err) => { if(err)throw err; res.send("Json uploaded") }) }) }) app.listen(80)
No se si es la mejor respuesta sobre la respuesta, espero haberte ayudado! Si tienes algún problema dimelo! Saludos!
|
|
|
En línea
|
|
|
|
Drakaris
Desconectado
Mensajes: 286
Todo lo que puedas imaginar, lo puedes crear.
|
Claro que si, pero en el servidor ha de tener una manera de coger el post y sobre escribir el contenido de la base de datos por el del post: Front-end: async function postData(data) { fetch("/post", { method: 'POST', headers: {'Content-Type':'application/x-www-form-urlencoded'}, body: "data=" + JSON.stringify({user: "admin", pass: "admin"}) }).then((res) => data(res.text().then((text) => console.log(text)))); } document.querySelector("button").addEventListener("click", () => { postData((data) => console.log(data)); })
back-end: const express = require("express"); const app = express(); const fs = require("fs"); app.use(express.urlencoded()) app.route("/").get((req, res) => { res.sendFile(__dirname + "/post.html"); }) app.route("/post").post((req, res) => { let post_data = JSON.parse(req.body.data); console.log(post_data); fs.readFile(__dirname + "/bdd.json", (err, data) => { if(err)throw err; data = JSON.parse(data); data[post_data.user] = post_data.pass; fs.writeFile(__dirname + "/bdd.json", JSON.stringify(data), (err) => { if(err)throw err; res.send("Json uploaded") }) }) }) app.listen(80)
No se si es la mejor respuesta sobre la respuesta, espero haberte ayudado! Si tienes algún problema dimelo! Saludos! Ok, muchas gracias lo miraré.
|
|
|
En línea
|
Lo increible, no es lo que ves, sino como es
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Cambio de ip a traves de fichero externo de texto
Programación Visual Basic
|
ratp
|
0
|
889
|
15 Abril 2008, 17:28 pm
por ratp
|
|
|
Ver contenido de dispositivos a traves de la consola
GNU/Linux
|
alzehimer_cerebral
|
2
|
4,650
|
21 Febrero 2011, 15:27 pm
por RyogiShiki
|
|
|
Ver donde acaba archivo contenido en otro archivo
Ingeniería Inversa
|
lucaslopez0000
|
3
|
2,990
|
1 Febrero 2013, 19:31 pm
por apuromafo CLS
|
|
|
Leer archivo json desde vb.net ...? ayuda !!!
.NET (C#, VB.NET, ASP)
|
lordhackerbynary
|
2
|
8,496
|
26 Agosto 2016, 09:30 am
por Eleкtro
|
|
|
se puede pasar contenido de txt a .json?
Desarrollo Web
|
bengy
|
1
|
4,055
|
17 Octubre 2016, 05:43 am
por engel lex
|
|