Как интегрировать модель mongoose с Gridfs и связать дополнительные поля, такие как req.body.name и такие вещи, как description - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь создать приложение для фотографий, которое хранит изображения, такие как JPEG и PNG, а также некоторые детали, такие как заголовок, описание.Я следую инструкции GridFS Брэда Траверси. Я не могу связать свою модель Мангуста с кодом gridfs.

Код, который работает для публикации данных в коллекцию gridfs

 mongoose.Promise=global.Promise;
 mongoose.connect('', {useNewUrlParser:true}, (err, database) => {
 if (err) {
  console.log('MongoDB Connection Error. Please make sure that MongoDB is 
   running.');
   process.exit(1);
   } else{
    console.log('connection succeeded')
   }

  });



  Grid.mongo = mongoose.mongo;
 var connection = mongoose.connection;
 connection.on('error', console.error.bind(console, 'connection error:'));
 connection.once('open', function () {

    gfs = Grid(connection.db);

   router.get('/', function (req, res) {
    res.render('index');
   });
  })




const storage = new GridFsStorage({
  url: '',
  file: (req, file) => {
    return new Promise((resolve, reject) => {
     crypto.randomBytes(16, (err, buf) => {
       if (err) {
      return reject(err);
       }
       const filename = buf.toString('hex') + 
       path.extname(file.originalname);
    const fileInfo = {
      filename: filename,
      bucketName: 'FileUploads'
    };
    resolve(fileInfo);
     });
   });
 }
});

 const upload = multer({ storage }).single('file');
router.post('/', (req, res) => {
  upload(req, res, (err) => {
   if (err) {
  return res.end('error request file');
   }

   var data = new Image({
    name : req.body.name,
      image:req.body.file
    });
    data.save().then((result) => {
  //res.send(result);
  //res.redirect('/')
    console.log('saved')
    });
   console.log(req.file);
   //res.end('upload file success');
   //res.redirect('/')
   res.redirect('/')
   console.log('success');
 });
});

This is my models file
const  express = require('express');
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

  const Image = new Schema({
   name: {
  type:String
   } ,
   image :{
   type:Object.Types.SchemaId;
   ref:'GFS'
  }

 });


   const GFS = new Schema({},"fs.files" )



  module.exports = mongoose.model('Image', Image )
  module.exports = mongoose.model('GFS', GFS)

 Can you tell how i retrieve the multiple collections in one route, I want o 
 make  a crud application, using Gridfs and mongoose. 
...