Вызов файлов, хранящихся в базе данных mongo из файла pug (в cms Keystonejs) - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь расширить keystonejs cms, используя Node и pug. По сути, я хочу добавить возможность добавлять описание для каждого загружаемого мной изображения. В настоящее время я правильно храню изображения в базе данных Монго. Однако по какой-то причине я не могу получить изображения для правильного отображения или для отображения названия данных. Как показано ниже, идентификатор изображения подбирается, но без кубиков. Загрузка изображений работает, и изображения хранятся правильно, поэтому я думаю, что это проблема с тем, как я называю src изображения в файле pug.

У меня есть модель галереи, и я называю связь с моделью изображения

var keystone = require('keystone'),
Types = keystone.Field.Types;

/**
 * Gallery Model
 * =============
 */

var Gallery = new keystone.List('Gallery', {
    map: { name: 'name' },
    autokey: { path: 'slug', from: 'name', unique: true }
});

Gallery.add({
    name: { type: String, required: true},
    published: {type: Types.Select, options: 'yes, no', default: 'no', index: true, emptyOption: false},
    publishedDate: { type: Types.Date, index: true, dependsOn: { published: 'yes' } },
    description: { type: Types.Textarea, height: 150 },
    heroImage: { type: Types.CloudinaryImage },
    images : { type: Types.Relationship, ref: 'Image', many: true }
});

Gallery.defaultColumns = 'title, published|20%, publishedDate|20%';
Gallery.register();

Модель изображения, она использует cloudinary, поскольку, похоже, это то, что поддерживает keystone / что я нашел в учебниках, которые работают

var keystone = require('keystone'),
Types = keystone.Field.Types;

/**
 * Image Model
 * ==================
*/

var Image = new keystone.List('Image', {
    map: { name: 'name' },
    autokey: { path: 'slug', from: 'name', unique: true }
});

Image.add({
    name: { type: String, required: true },
    image: { type: Types.CloudinaryImage, autoCleanup: true, required: true, initial: false },
    description: { type: Types.Textarea, height: 150 },
});

Image.relationship({ ref: 'Gallery', path: 'heroImage' });
Image.relationship({ ref: 'Gallery', path: 'images' });

Image.register();

Gallery.pug

 extends ../layouts/default

block intro
    .container
        h1 Gallery

block content
    .container
        if galleries.length
            each gallery in galleries
                h2= gallery.name


                .row.gallery-images
                    if gallery.heroImage.exists
                        .col-sm-4.col-md-4.gallery-image: img(src=gallery._.heroImage.limit(680,680)).img-rounded
                        .col-sm-8.col-md-8: .row
                            each image in gallery.images
                                .col-xs-4.col-sm-4.col-md-3.gallery-image: a.example-image-link(href=image  data-lightbox="example-set" )
                                    img(src=image date-title=image.name).img-rounded1.exampleimage
                    else
                        each image in gallery.images
                                .col-xs-4.col-sm-4.col-md-3.gallery-image: a.example-image-link(href=gallery.image data-lightbox="example-set" date-title=description)
                                    img(src=images.image).img-rounded1.exampleimage
        else
            h3.text-muted There are no image galleries yet.

В «живом» html

<div class="col-xs-4 col-sm-4 col-md-3 gallery-image">
                <a class="example-image-link" href="5cc494c821ed5b3770568968" data-lightbox="example-set">
                <img class="img-rounded1 exampleimage">
                </a>
                </div>
...