Я получаю ошибку при отправке формы - PullRequest
0 голосов
/ 23 мая 2019

При подключении к mongodb я получаю предупреждение

"DeprecationWarning: текущий анализатор строки URL устарел и будет быть удаленным в будущей версии. Чтобы использовать новый парсер, передайте опцию { useNewUrlParser: true} для MongoClient.connect. "

при отправке формы - я получаю

Соединение с базой данных должно быть открыто для хранения файлов в GridFSStorage._handleFile (C: \ Users \ charan puli \ Desktop \ upload \ node_modules \ multer-gridfs-storage \ lib \ gridfs.js: 341: 17) в C: \ Users \ charan puli \ Desktop \ upload \ node_modules \ multer \ lib \ make-middleware.js: 144: 17 at allowAll (C: \ Users \ charan puli \ Desktop \ upload \ node_modules \ multer \ index.js: 8: 3) at wrappedFileFilter (C: \ Users \ charan puli \ Desktop \ upload \ node_modules \ multer \ index.js: 44: 7) в автобусе. (C: \ Users \ charan puli \ Desktop \ upload \ node_modules \ multer \ lib \ make-middleware.js: 114: 7) на Busboy.emit (events.js: 182: 13)

//////////////////app.js///////////////////////

//middle wares

app.use(bodyparser.json())

app.use(methodOverride('_method'))


app.set("view engine","ejs")

//connection

var mongoURI='mongodb+srv://user:password@clusterpuli-xs9yc.mongodb.net/test?retryWrites=true'


mongoose.connect(mongoURI,{useNewUrlParser:true})
        .then(()=>{console.log('connected successfully');
        })
        .catch(err=>{console.log(err);
        })

var conn=mongoose.connection
var gfs
conn.once('open',() =>{
gfs = Grid(conn.db, mongoose.mongo);

  gfs.collection('questions')
})
//create storage object

var storage = new GridFsStorage({
    url: mongoURI,
    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: 'questions'
          };
          resolve(fileInfo);
        });
      });
    }
  });
  const upload = multer({ storage });
//@route /upload POST

app.post('/upload',upload.single('file'),(req,res)=>{
    res.json({'file':req.file})
})


 var port= 3000
app.get("/",(req,res)=>{
    res.render('index')
})

app.listen(port,()=>{
    console.log(`app is running at ${port}`);

})


////////////////////////////////////

ожидается - объект файла json, успешно подключен

актуально - соединение с базой данных должно быть открыто

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Это должно работать для вас, я проверил это:

//connection

const mongoURI = 'mongodb+srv://user:password@clusterpuli-xs9yc.mongodb.net/test?retryWrites=true';

const promise = mongoose.connect(mongoURI, { useNewUrlParser: true });

const conn = mongoose.connection;
let gfs;

conn.once('open',() => {
  gfs = Grid(conn, mongoose.mongo);
  gfs.collection('questions');
});

//create storage object
const storage = new GridFsStorage({
  db: promise,
  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: 'questions'
        };
        resolve(fileInfo);
      });
    });
  }
});
const upload = multer({ storage });

См. Эту ссылку здесь для получения дополнительной информации: Модуль хранения Multer's GridFS

Это связано с новым парсером URL нового клиента mongo API драйвера MongoDB Node.js. См. Эту ссылку: MongoClient

У меня была такая же проблема, поэтому я остановился на вашем вопросе.

0 голосов
/ 23 мая 2019

// соединение

var mongoURI = 'mongodb + srv: // charanpuli: Charan @ 1999 @ clusterpuli-xs9yc.mongodb.net / test? RetryWrites = true'

var conn= mongoose.connection

MongoClient.connect (db, {useNewUrlParser: true})

    .then(()=>{console.log('connected successfully');
    })
    .catch(err=>{console.log(err);
    })

var gfs conn.once ('open', () => {gfs = Grid (conn.db, mongoose.mongo);

gfs.collection ('Вопросы')})

...