Пн goose без сохранения элементов массива - PullRequest
0 голосов
/ 13 февраля 2020

Я новичок в Node и Mon goose и пытаюсь создать приложение, используя стек MERN.

Когда я сохраняю свои данные из моего состояния в mongodb, используя mon goose содержимое массива, который я пытаюсь сохранить, на самом деле не сохраняется.

Вот как выглядят мои тестовые данные при отправке с клиента на сервер: enter image description here

Когда я проверяю Mongodb Atlas, он выглядит следующим образом: enter image description here

Массив там кажется пустым.

Соответствующая модель выглядит вот так:

const mongoose = require("mongoose");

const Schema = mongoose.Schema;
const LanesSchema = new Schema(
    {
        lanes: [
            {
                id: String,
                title: String,
                tasks: [
                    {
                        id: String,
                        title: String,
                        status: String,
                        description: String,
                        priority: String
                    }
                ]
            }
        ]
    },
    { minimize: false }
);

const Lane = mongoose.model("Lanes", LanesSchema);

module.exports = Lane;

Я думал, что здесь может быть что-то не так с моделью, но я не уверен.

Я также пробовал эту версию прямо здесь, но она тоже не работала :

const LanesSchema = new Schema([
    {
        id: String,
        title: String,
        tasks: [
            {
                id: String,
                title: String,
                status: String,
                description: String,
                priority: String
            }
        ]
    }
]);

Сохраняющая часть моего кода в основном выглядит следующим образом:

const express = require("express");

const router = express.Router();

const Lane = require("../models/lanes");

router.post("/save", (req, res) => {
    const data = req.body;
    const newLane = new Lane(data);
    newLane.save(error => {
        if (error) {
            res.status(500).json({ msg: "Internal server error" });
            return;
        }
        res.json({
            msg: "We received your data!"
        });
    });
});

module.exports = router;

Это req.body, отформатированный как JSON:

[
   {
      "id":"1",
      "title":"Open",
      "tasks":[
         {
            "id":"1",
            "title":"Test task",
            "status":"Open",
            "description":"Test description",
            "priority":"High"
         },
         {
            "id":"4",
            "title":"Test task 4",
            "status":"Open",
            "description":"Test description",
            "priority":"Normal"
         }
      ]
   },
   {
      "id":"2",
      "title":"In Progress",
      "tasks":[
         {
            "id":"2",
            "title":"Test task 2",
            "status":"In Progress",
            "description":"Test description",
            "priority":"Normal"
         },
         {
            "id":"3",
            "title":"Test task 3",
            "status":"In Progress",
            "description":"Test description",
            "priority":"Normal"
         }
      ]
   },
   {
      "id":"b0d547b1-f669-418e-8558-4739b15e1ef6",
      "title":"testLane",
      "tasks":[

      ]
   }
]

Прямо сейчас я не уверен, в чем проблема. Пока что я не смог найти подобный вопрос.

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

Заранее спасибо .

1 Ответ

0 голосов
/ 13 февраля 2020

Спасибо, @Sushant Mehta за комментарии.

"вы пытаетесь добавить несколько записей, но используете сохранение, попробуйте использовать insertMany."

Это помогло мне.

Мой код теперь выглядит так:

router.post("/save", (req, res) => {
    const data = req.body;
    const newLane = new Lane();
    newLane.collection.insertMany(data, err => {
        if (err) {
            console.log(err);
        } else {
            console.log("Multiple docs inserted");
        }
    });
});
...