не может заполнить ссылку в мангусте с мультисетью хранения фс - PullRequest
0 голосов
/ 07 декабря 2018

Я загружаю файл в my mongodb, используя хранилище multergridfs. Я создал movieSchema со свойством fileID, к которому я обращаюсь с идентификатором файла, который я загружаю, fileID является ссылкой успешно с идентификатором файла, проблема в том, что при попытке заполнить метод amне получается свойство файла

//fileupload
const storage = new GridFsStorage({
    url: 'mongodb://127.0.0.1:27017/kannywoodtv-dev',
    file: (req, file) => {
        return {
            filename: req.body.name + path.extname(file.originalname)
        };
    }
});
const upload = multer({
    storage
});

router.post('/', upload.array('file', 'file'), (req, res) => {
    console.log(req.files)
    const movie = new Movie({
        description: req.body.Description,
        category: req.body.Category,
        token: token,
        fileID: [{
            type: req.files[0].id,
            ref: 'fs.files'
        }],
        posterID: [{
            type: req.files[1].id,
            ref: 'fs.files'
        }]
    });
    console.log(movie)
    movie.save(function(err) {
        if (err) {
            console.log(err);
            return;
        }

        res.json({
            "success": "true"
        });
    });

});

//my movie schema with fileID property i referenced from original file id 
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const MovieSchema = new Schema({
    description: String,
    category: String,
    token: {
        type: String,
        unique: true,
        expires: '30s'
    },
    fileID: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'fs.files'
    },
    posterID: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'fs.files'
    }
});


const Movie = mongoose.model('Movies', MovieSchema);

module.exports = Movie;

//mongoose populate
router.get('/movies', (req, res) => {
    Movie
        .find({
            fileID: '5c0ac602105b096fa1688577'
        })
        .populate('filename').then(files => {
            res.send(files)
        })
        .catch(err => {
            throw err
        })
})
...