хранение и извлечение данных, полученных с помощью REST, в mongodb с использованием fetch на узле - PullRequest
0 голосов
/ 17 января 2020
methods: {
onclicksubmit: function () {

const user = {
    firstname: this.firstname
  }
  const options = {
    method: 'POST',
    headers: {
      'Content-type': 'application/json'
    },
    body: JSON.stringify(user)
  };
  fetch('http://localhost:3000/register', options).then(response => {
    console.log('success', response);
  }).catch((error) => {
    console.error('Error:', error);
  });
},

Когда я нажимаю кнопку отправки, она должна отправить данные в базу данных, но появляется сообщение об ошибке «Не удалось получить». Это код бэкэнда:

    app.use(bodyParser.json())
app.post('/register', function (req, res) {

  res.send({
firstname: req.body.firstname,


  })
  console.info("Request body: " + JSON.stringify(req.body));

  db.collection('user').insertOne(req.body, req.body.firstname, function (err, res) {
      if (err) return console.log(err)
      else res.send('success!')

      console.log('saved to mongodb');


    })
});

1 Ответ

0 голосов
/ 17 января 2020

Вы пытаетесь отправить запрос на домен, отличный от того, на котором находится ваша страница. Таким образом, браузер блокирует его, поскольку он обычно позволяет запрос в том же источнике по соображениям безопасности. Когда вы используете почтальон, они не ограничены этой политикой.

Вы можете использовать подобный код для включения CORS.

// Add headers
app.use(function (req, res, next) {

    // Website you wish to allow
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8888');

    // methods you wish to allow
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

    // headers you wish to allow
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

    next();
});

ИЛИ

const express = require('express')
const cors = require('cors')
const app = express()

app.post('/register', cors(), (req, res, next) => {
})

...