Как сохранить вложенный массив данных объектов с помощью мангуста? - PullRequest
0 голосов
/ 20 февраля 2019

Итак, я отправляю данные из угловой реактивной формы, например: Изображение пользовательского интерфейса угловой реактивной формы

и Данные отправляются на сервер в образе консоли браузера

Я создал схему для задачи как:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

let taskSchema = new Schema({
    taskId:{
        type:String,
        unique:true
    },
    task:{
        type:String,
        default:''
    },
    subTask:[{ 
        type: Schema.Types.ObjectId, 
        ref: 'SubTask'
    }]
}
module.exports = mongoose.model('Task',taskSchema);

Схема для подзадачи как:

let subTaskSchema = new  Schema({
    title:String,
    subSubTask:[{ 
        type: Schema.Types.ObjectId, 
        ref: 'SubSubTask'
    }]
})
module.exports = mongoose.model('SubTask',subTaskSchema);

Схема для подзадачи как:

let subSubTaskSchema = new  Schema({
    title:String
})
module.exports = mongoose.model('SubSubTask',subSubTaskSchema);

Теперь, я не понимаю, как сохранить вложенный массив данных объектов в mongodb, используя mongoose?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

вы можете определить свою схему следующим образом:

const userSchema = new mongoose.Schema({
    likedBooks: [{
        type: mongoose.Types.ObjectId,
        ref: 'books'
    }],
    email: {
        type: String,
        required: true
    },
    name: {
        type: String,
        required: true
    }
});

exports.User = mongoose.model('users', userSchema);

, затем вы можете заполнить данные, выполнив

user = User.find({ email: req.body.email }).populate('likedBooks');

здесь «Любимые книги» содержит _id каждой книги

const bookSchema = new mongoose.Schema({
    isbn: {
        type: Number,
        required: true
    },
    name: {
        type: String,
        required: true
    },
    author: {
        type: String,
        required: true
    },
    publisher: {
        type: String,
        default: ""
    },
    imageUrl: {
        type: String,
        required: true
    },
    description: {
        type: String,
        default: ""
    }
});

exports.Book = mongoose.model('books', bookSchema);

для обеих схем я не поставил _id, так как он автоматически генерируется mongodb и используется как ссылка

0 голосов
/ 20 февраля 2019

Объектная модель должна выглядеть следующим образом перед сохранением.

{ taskId: 1, task: 'Do something', subTask: [{ title: 'Write a essay', subSubTask: [{ title: 'Collect details to write an essay' }] }] }

Надеюсь, это поможет ...

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