заполнение изображения из gridfs mongodb - PullRequest
0 голосов
/ 15 октября 2019

У меня проблема при попытке заполнить изображения из MongoDB gridfs как часть "Схемы плаката". Использование среднего стека с бэкэндом RESTful. Теперь я могу писать в gridfs и иметь fs.files и fs chunks, но у меня возникли некоторые проблемы, когда я пытаюсь отправить картинки в Angular. Я пытаюсь создать такую ​​веб-страницу, как Facebook, где у меня будет страница для демонстрации всего «постера», а у каждого «постера» будет пара картинок. Вот что у меня есть:

Backend get poster router: Это моя модель поста

    dateAdded           : { type: Date, default: Date.now() },

    validation          : { type: Boolean, default: true },
    author              : { 
        id                  : { type: 'ObjectId', ref: 'User', index: true },
        userName            : {type: String,  default: null}},

    location            : { type: String, default:null },
    pictures            : { type: mongoose.Schema.Types.Object, ref: 'picture', index: true },
    content             : { type: String, default: null }, 


exports.publicGet = async function (req, res) {
    // variables defined in the Swagger document can be referenced using req.swagger.params.{parameter_name}
    var fields = ['_schemaName',
        'dateAdded',
        'location',
        'pictures',
        'content',
        'author'];
    var poster = mongoose.model('Posters'); 

    var query = {};
    var sort = {
        dateAdded: -1
    };
    _.assignIn(query, { '_schemaName': 'Posters'});
    try{
        var data =  await utils.runDataQuery('Posters',
            query,
            fields, // Fields
            sort, // sort
            false,
            true);
        // console.log('data', data);
        utils.recordAction('Get', 'Poster', 'public');
        return actions.sendResponse(res, 200, data);
    }
    catch(error){
        defaultLog.errorLog.info( 'Error: ', error);
        return actions.sendResponse(res, 400, error);
    }

};

Это utils.runDataQuery, где я пытаюсь заполнить изображение, которое хранится вgridfs в постер.

            populatePicture && {
                '$lookup': {
                    'from': 'fs.files',
                    'localField': 'pictures',
                    'foreignField': '_id',
                    'as': 'pictures'
                }
            },
            populatePicture && {//this will populate the binary file... which I think is not correct
                '$lookup': {
                    'from': 'fs.chunks',
                    'localField': 'pictures._id',
                    'foreignField': 'files_id',
                    'as': 'pictures.chuncks'
                }
            },
            populatePicture && {
                '$unwind': {
                    'path': '$pictures', 
                    'preserveNullAndEmptyArrays': true
                }
            },

Но таким образом я получаю двоичные данные изображения из fs.chunks в своем ответе на постер ... что я думаю, что это не правильно

МожетКто-нибудь, помогите мне с этим вопросом для заполнения мангуста?

Полный рабочий код можно найти в https://github.com/w8896699/UTPS-api/pull/15

...