MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Armazenando um arquivo no MongoDB usando Multer no Mongoose


Cara, você está correndo no caminho errado. Já expliquei em sua solicitação de pergunta anterior que o Multer é usado para salvar arquivos no sistema de disco de arquivos e não diretamente no seu banco de dados. Para isso você deve usar GRIDFS.

Chegando à sua pergunta atual.
app.post('/Upload', upload.single('solution') ,function (req, res, next) {
    console.log(req.file);
});

Aqui o upload.single('solution') - chama uma função Upload e o nome do arquivo passado é a solução, mas é óbvio o suficiente que não está disponível aqui.

use este tipo de formato - documentação do Multer
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '/tmp/my-uploads')
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now())
  }
})

var upload = multer({ storage: storage })

A parte de armazenamento é usada para fornecer o caminho para onde seu arquivo deve ser salvo e a seção do nome do arquivo é usada para fazer alterações no nome do arquivo que você gostaria de ter.

Por favor, leia a documentação porque isso vai ajudar. Quando usamos módulos de terceiros, devemos reconhecer as informações que eles já forneceram para que possamos usar seu trabalho com facilidade.

Deixe-me facilitar para você. Aqui está um código pronto que funciona.

Multer lançando erro estranho ao fazer upload de arquivo via upload de arquivo ng

Vá verificar esse tópico. A questão foi levantada por mim - o problema era que eu estava enviando arquivos em formato array, como em vários arquivos de uma só vez. Se você não estiver fazendo isso, apenas altere o segmento ng-file-upload para usar o exemplo de demonstração de upload único e, no código nodejs do lado do servidor, substitua .array com .single e as coisas funcionarão da maneira que você deseja que funcionem - dado que você deseja usar o sistema de disco de arquivos para armazenar arquivos.

Repito que este método não ajudará você a salvar o arquivo no mongodb diretamente.

Deixe-me saber se você precisar de mais esclarecimentos.