Estoy buscando mi ubicación actual en el lado del cliente y estoy usando fetch.
if ('geolocation' in navigator) { console.log('geolocation available'); navigator.geolocation.getCurrentPosition(async (position) => { console.log(position.coords.latitude, position.coords.longitude); let lat = position.coords.latitude; let lng = position.coords.longitude; document.getElementById('latitude').textContent = lat; document.getElementById('longitude').textContent = lng; const data = { lat, lng } const options = { method: 'POST', headers: { 'Content-Type': 'application/json' }, data: JSON.stringify(data) }; console.log(options, "options") let response = await fetch('/api', options) const datas = await response.json(); console.log(datas, 'after fetch'); }); } else { console.log('geolocation not available') }En el lado del servidor estoy haciendo publicaciones.
const express = require("express"); const app = express(); app.use(express.static('public')); app.use(express.json({ limit: '1mb' })); // app.use(express.urlencoded()); app.listen(3000, () => console.log('listening at 3000')) app.post('/api', (request, response) => { console.log('I got a request'); console.log(request.body,"req"); response.json({ status: 'success', latitude: request.body.lng, longitude: request.body.lat }) })Pero no obtengo los datos en el cuerpo de la solicitud.
listening at 3000 I got a request {} reqPor favor, ayúdenme a resolver esto, ya que ha pasado mucho tiempo y no puedo depurarlo.
El cuerpo de registro de su consola, por lo que debe enviar el cuerpo
const opciones = { método: 'POST', encabezados: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) };
Probablemente necesite un analizador corporal para manejar el cuerpo json
https://www.npmjs.com/package/body-parser
var express = require('express') var bodyParser = require('body-parser'); var app = express() app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json());