извлекать сообщение дает мне неопределенный для опубликованных данных? - PullRequest
0 голосов
/ 27 сентября 2019

Обучение использованию Sapper.У меня есть компонент с формой (форма имеет одно поле для ввода адреса электронной почты) и использую fetch для отправки данных на дескриптор сервера.Когда я публикую данные и пытаюсь зарегистрировать опубликованные данные, они записываются как неопределенные.Я понятия не имею, почему и мне нужна помощь, чтобы выяснить это.

Вот мой компонент с формой и получить почтовый индекс:

<script>

  let emailvalue
  let url = "posthandle"


  async function handleSubmit(event) {
  console.log(event);
  console.log(event.target);

  emailvalue = event.target.email.value;

  console.log("this is from the variable--data--:" + content)

  // ******** Here is the Fetch() code
  fetch(url, {
  method: 'POST',
  body: JSON.stringify(emailvalue),
  headers: {
  'Content-Type': 'application/json'
  }
  })
  .then(r => {
  //this is gives the error that res stream is locked console.log(r.json())
  consolde.log(r)
  r.json()
  .then(function(result) {
  // this logs [object object]
  console.log("let us see" + result)
  })
  })
  .catch(err => {
  // POST error: do something...
  console.log('POST error', err.message)
  })    
  //post code example /9801347/js-sapper-otpravka-dannyh-na-server-pravilnyi-put

  }

</script>


<p> {emailvalue} </p>

<form on:submit|preventDefault="{handleSubmit}">
  <label for="email">Email</label>
  <input required type="email" id="email" />
  <button type="submit">Create account</button>
</form>

Строка, которая гласит: console.log ("давайте посмотрим, "+ результат) показывает [объект объекта], и я не понимаю, почему?

Моя ручка для управления публикацией:

     export async function post(req, res, next) {

        res.setHeader('Content-Type', 'application/json')
        /* Retrieve the data */
        var data = req.body;


        // Do something with the data...
        // it logs Undefined. Why?
        console.log("Here's the posted data:" + data );

        /* Returns the result */
        return res.end(JSON.stringify({ success: true }));

}

почему данные не определены?Код неправильный?Должен ли я что-то сделать, чтобы прочитать «данные» и управлять фактическими данными, опубликованными в форме?

Вот мой серверный код (после @J) указал на проблему с анализатором тела:

import express from 'express';
import * as sapper from '@sapper/server';
const sirv = require('sirv');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

const session = require('express-session');
const assets = sirv('static', {
    maxAge: 31536000, // 1Y
    immutable: true
});


app.use(session({
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: true,
    cookie: { secure: true }
}))

app.use(assets, sapper.middleware()).listen(process.env.PORT, err => { if (err) console.log('error', err); });

Если я console.log (r) из моей функции fetch, которая имеет ответ.Я получаю это в консоли: Response {type: "basic", url: "http://localhost:3000/posthandle", перенаправлено: false, статус: 200, ok: true,…}

...