Как я могу отправить несколько данных в приложении стека MERN? - PullRequest
0 голосов
/ 23 апреля 2020

Мне нужна помощь, чтобы опубликовать несколько данных по категории, и когда я выбираю несколько данных на выбранном входе и отправляю, выдается ошибка. см. ниже ошибку

  setSelected = (selected) => {
    this.setState({ selected });
  };
  handleSubmitPost = (e) => {
    const selected = this.state.selected;
    let select = [];
    for (let i = 0; i < selected.length; i++) {
      select = [...select, selected[i].value];
    }
    console.log(select);
    e.preventDefault();
    const fd = new FormData();
    fd.append("title", this.state.title);
    fd.append("category", select);
    fd.append("article", this.state.article);
    fd.append("blogImage", this.state.blogImage);

    axios
      .post(`http://localhost:5000/posts`, fd)
      .then((res) => {
        console.log(res);
      })
      .catch((err) => console.log(err));
  };

, вот схема модели. МОДЕЛЬ

const postSchema = new mongoose.Schema({
  title: { type: String, required: true },
  category: [
    {
      type: Schema.Types.ObjectId,
      ref: "PostCategory",
    },
  ],
  article: { type: String, required: true },
  blogImage: { type: String, required: true },
  createdAt: { type: Date, default: Date.now },
});

вот мой файл маршрута. МАРШРУТЫ

router.post("/", upload.single("blogImage"), async (req, res) => {
  const { title, article, createdAt, category } = req.body;

  const newPost = new Post({
    title,
    category,
    article,
    createdAt,
    blogImage: req.file.path,
  });
  try {
    const savedPost = await newPost.save();
    res.json(savedPost);
  } catch (err) {
    res.status(400).send(err);
  }
});

, когда я выбираю несколько при выборе входа, это ошибка при отправке.

Error: Request failed with status code 400
    at createError (createError.js:16)
    at settle (settle.js:17)
    at XMLHttpRequest.handleLoad (xhr.js:61)

, но когда я выбираю только одну, она проходит. Я могу сохранить только один в поле категории «май», и я хотел сохранить несколько в поле категории.

1 Ответ

0 голосов
/ 23 апреля 2020

Вы получаете 400 ошибок. Похоже, что запрос * ax1 1011 * post отправляется на http://localhost: 5000 / posts , однако, похоже, что в коде вашего сервера есть маршрут "/ posts". Попробуйте изменить код сервера, чтобы он принимал запрос на публикацию в «/ posts». См. Ниже:

router.post("/", upload.single("blogImage"), async (req, res) => {

// vs 

router.post("/posts", upload.single("blogImage"), async (req, res) => {

В качестве альтернативы, вы можете сбросить маршрут сообщений из вашего запроса топора ios и сделать запрос на http://localhost: 5000 .

...