Хранить фото URL в базе данных - PullRequest
0 голосов
/ 20 марта 2019

Я использую Facebook API для входа в свое приложение реакции. Фронтенд - это responseJS, а бэкэнд - это узел JS. При первом входе в систему я посылаю имя, адрес электронной почты и ссылку на фотографию профиля на nodeJS. Проблема заключается в том, что nodeJS не анализирует URL-адрес надлежащим образом, даже если он был правильно отправлен из responseJS (с использованием POST).

Это выглядит так:

{'{"name":"testname","email":"test@mail.com","profilePhoto":"https://platform-lookaside.fbsbx.com/platform/profilepic/?asid': '1111111111111111', height: '50', width: '50', ext: '1111111111', hash: 'AeRNlZmAF4w5mT5r"}' }

Должно выглядеть так:

{"name":"testname","email":"test@mail.com","profilePhoto":"https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=1111111111111111&height=50&width=50&ext=1111111111&hash=ArS0tErHD8Tg9l3s"}"

Другими словами, он не должен разбивать URL на части, потому что я хочу, чтобы исходный URL был в базе данных.

Вот сервер.js

const express = require("express");
const config = require("../config");
const knex = require("../knex/knex");
const api = require("./api");
const cors = require("cors");
const bodyParser = require("body-parser");

const app = express();

app.use(cors());
app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept"
  );
  next();
});

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

app.use("/api", api.router);

app.listen(config.port, config.host, () => {
  console.log(Server is running on http://${config.host}:${config.port});
});

и это apiRequest.js в ReactionJS:

const apiRequest = (apiPath, options) => {
  const mainOptions = {
    headers: {
      Accept: "application/json"
    },
    mode: "cors",
    credentials: "include"
  };

  const finalOptions = merge(mainOptions, options);

  if (finalOptions.body) {
    finalOptions.body = JSON.stringify(finalOptions.body);
    finalOptions.headers["Content-Type"] = "application/x-www-form-urlencoded";
  }

  const requestUrl = `http://${backendConfig.host}:${
    backendConfig.port
  }/api/${apiPath}`;
  console.log(requestUrl, finalOptions);
  return fetch(requestUrl, finalOptions).then(response =>
    solveErrors(response)
  );
};

Этот подход хорош или есть лучший способ сохранить URL в базе данных?

1 Ответ

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

Решено!

Я удалил credentials: "include" и изменил "application/x-www-form-urlencoded" на "application/json"

...