Как сохранить массив объектов в mongodb с mon goose? - PullRequest
1 голос
/ 06 февраля 2020

Я хочу сохранить сложные данные, ie массив объектов в mon goose. Я пробовал несколько вещей, но я не смог сохранить данные.

Я определил свою схему, как указано выше, и я хочу сохранить массив объектов, которые могут иметь любой уровень вложенности. Схема

const mongoose = require('mongoose);
const PostSchema = new mongoose.Schema({
    post: [{}]
});

let PostModel = mongoose.Model('Post', PostSchema)

Данные: enter image description here

Вот код, который я использовал для сохранить данные

app.post('/saveData, async (req, res) => {
    const response = await Post.create(req.body);
    res.json({
        data: response
    });
});

app.listen(8008, () => {
    console.log('server running);
});

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

Как это можно сделать?

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Этот код работает для меня.

  const PostModel =  require('./Post');    //declare your model
  app.post('/saveData', async (req, res) => {
    const objModel = new PostModel();
    objModel.post = req.body;   //assign the data post array.
    const response = await objModel.save();
    res.json({
      data: response
    });
  });
0 голосов
/ 06 февраля 2020

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

// Perhaps you are looking for something like this.
const PostSchema = new mongoose.Schema({
    title: String,
    content: String,
    level: Number,
    footer: String,
    author: ObjectId,// who wrote the post
    comments: [{
       user: ObjectId,
       comment: String
    }],
    ... createdAt, updatedAt etc
});

Ваша структура данных также не соответствует вашей схеме. например, await Post.create ({posts: req.body});

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