Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

324
Vistas
¿Cómo puedo obtener valores de cadena devueltos en fetch ()?

El siguiente código es mi método de búsqueda en mi registro separado.js. Este es mi archivo js recién creado, por lo que puedo crear mi interfaz. Por el momento, solo intento consolar. registrar el resultado final de esta recuperación, pero no puedo obtener el resultado porque recibo un error cuando intento PUBLICAR esto.

error en la consola del navegador: "No detectado (en promesa) SyntaxError: Token S inesperado en JSON en la posición 0"

 fetch(`${rootUrl}api/users/register`,{ method:"POST", headers:{ "Content-Type": "application/json" }, body:JSON.stringify({ firstName: firstName, lastName: lastName, mobileNo: mobileNo, email: email, password: password }) }) .then(result=>result.json()) .then(result =>{ console.log(result); })

En userRouter.js, esta es la ruta que busco en register.js arriba:

 router.post('/register', (req, res)=>{ userController.register(req.body).then(result => res.send(result))})

Y la ruta conduce a este controlador en Usercontroller.js:

 module.exports.register = (reqBody)=>{ //check if email already exists before registering new user return User.find({email: reqBody.email}).then((result, error) =>{ if(result.length != 0){ return "EMAIL EXISTS!"; }else{ let newUser = new User({ firstName: reqBody.firstName, lastName: reqBody.lastName, email:reqBody.email, password: bcrypt.hashSync(reqBody.password, 10), mobileNo: reqBody.mobileNo }) return newUser.save().then((result, error)=>{ if (error){ return error; }else{ return "SUCCESFULLY REGISTERED NEW USER"; } }) } })}

Como puede ver, este es un formulario de registro. Todo funciona bien en el backend, usando cartero para ingresar valores. Todos mis avisos de condición están siendo devueltos (existen correos electrónicos, registro exitoso).

Pero cuando traté de crear una interfaz para él, no puedo obtener mis avisos definidos. Al igual que cuando ingreso deliberadamente un correo electrónico duplicado, no puedo obtener el mensaje "El correo electrónico existe" que solía recibir cuando usaba solo cartero o simplemente funcionalidad de la API de back-end.

Siento que algo está muy mal con lo que estoy tratando de hacer. Tengo problemas para crear una interfaz para mi API que no estoy usando en este momento.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Está devolviendo una respuesta que no es JSON, por lo que no puede usar res.json(). Simplemente está enviando una respuesta de texto. Así que usa res.text()

 fetch('/your-endpoint').then((res)=>{ return res.text(); }).then((text)=>{ console.log(text) })

about 4 years ago · Juan Pablo Isaza Denunciar

0

Hay algunos indicios que señalar.

  • Verifique rootUrl ya que después de eso no hay una foreslash .

  • Estás devolviendo el estilo de texto . use esto en su lugar para tener el resultado en formato json .

    res.status(200).json({result})

  • Trate de no usar Funcionalidades sincrónicas en la parte posterior. Debería evitarlo, o más bien, usar bcrypt.hash() mezclado con Async Function para eliminar la CallBack Function hasta que se haga. Además, para verificar el error de la función anterior para obtenerlo en la parte frontal usando Fetch / Axios. utilice el método Try/Catch .

  • Yo usaría axios [ axios.request({}) | axios.post(..) ] si yo estuviera en tu lugar.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda