Как я могу заполнить поле массива без ссылки в MongoDB (mon goose)? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть схема, содержащая поле массива. В это поле массива я вставлю объекты, которые содержат _id автора и комментарий автора. Я хочу заполнить это поле, но в моей схеме нет ссылки

, это мои схемы

const Book = new Schema({
    name: {
        type:String,
        required: true 
    }
    authors: [{
        type: Array
    }]
})

const Author = new Schema({
    name: {
        type:String,
        required: true 
    }
    (... author's data)
})

Я вставлю объекты в поле авторов коллекции книг:

insertAuthor = {
        _id:id,
        comment: 'comment'
    } 

Работает нормально, но я не могу заполнить поле авторов.

Кто-нибудь может мне с этим помочь?

Спасибо !!

1 Ответ

1 голос
/ 27 мая 2020

Вы можете указать model в populate, если ref не определен в Schema. Итак, насколько я понимаю, вам нужно запросить Book, заполнив Author.

const books = await Book.find().populate({path: 'authors._id', model: 'Author'}).exec();

Также в вашей схеме Book, если вы вставляете объект JSON, как указано в вашем вопросе, тогда не нужно определять type: Array внутри JSON. Вы можете обновить его, как показано ниже.

const Book = new Schema({
    name: {
        type:String,
        required: true 
    }
    authors: [{}] //or [{_id: {type: Schema.Types.ObjectId}, comment: {type: String}}]
})
...