POST-запрос показать неопределенный - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь отправить адрес электронной почты в виде объекта json на узел Express Rest API и распечатать его в HTML-файл. Значение предоставляется из index.js. Я ожидаю, что адрес электронной почты будет напечатан в файле, но все, что я получил, было неопределенным и, таким образом, как console.log. Мне интересно, какую часть я сделал не так? Файлы показаны ниже.

клиент postRequest.js

export function send(data={}) {
  return sendRequest('/send', data);
}

async function sendRequest(path, data={}) {
  const PATH = `${ROOT_URL}${path}`;
  const options = {'from' : data.from}
  const Settings = {
    method : 'POST',
    headers : {
      'Content-Type': 'application/json'
    },
    options
  };

  const response = await fetch(PATH, Settings)
    .then( res => res.json())
    .then( json => {
      return json;
    })
    .catch( e => {
      return e;
    })
  return data;
}

client index.js

import { send } from "./lib/postRequest";

function exportEmail(data => {
    let email = JSON.stringify('exp@gmail.com')
    send({'from' : email})
})

server.js

    const express = require("express");
    const next = require("next");
    const fs = require('fs');
    const dev = process.env.NODE_ENV !== "production";
    const port = process.env.PORT || 3000;
    const ROOT_URL = dev ? "http://localhost:${port}" : "https://exp.com";

    const app = next({ dev })
    const handle = app.getRequestHandler()

    app.prepare().then(() => {
        const server = express()

        server.use(express.urlencoded({
            extended: false
        }));

        server.use(express.json());

        server.post("/send", (req, res) => {
           fs.writeFile("./temp/test.html", req.body.from, function(err) {
            if(err) {
              return console.log(err);
            }
            console.log(req.body.from)
            console.log("The file was saved!");
          });
        });

        server.get('*', (req, res) => {
            return handle(req, res)
        })

        server.listen(port, (err) => {
            if (err) throw err
            console.log('> Ready on ${ROOT_URL}')
        })

    }).catch((ex) => {
        console.error(ex.stack)
        process.exit(1)
    })

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

В методе выборки нет параметра body. Вы можете сделать это так.

 fetch(url, {
            method: "POST", /
            headers: {
                "Content-Type": "application/json",
            },
            body: JSON.stringify(data), // body data type must match "Content-Type" header
        })
        .then(response => response.json());
0 голосов
/ 12 марта 2019

Вы должны установить тело вашего почтового запроса:

const Settings = {
    method : 'POST',
    headers : {
      'Content-Type': 'application/json'
    },
    body:options
};
...