Skip to content

.structure

Matthew Tangkilissan edited this page Jul 3, 2023 · 2 revisions

Application Structure

Ik heb voor dit deel van het project helaas geen goed werkende database opgezet en worden alleen de geüploade bestanden lokaal opgeslagen.

De client en server flow

Wat moest er gebeuren?

Oorspronkelijk waren er twee momenten waarop er gebruikersdata verzamelt kon worden door Fastpass. De antwoorden van de gebruiker op de vragenlijst en de geüploade bestanden moesten gepost worden in een database van MongoDB in twee verschillende collections. De gebruiker zou geen toegang hebben tot deze data als het eenmaal in de database was gepost en kon die data niet eventueel opvragen. Het is mij gelukt om een werkende database met collection op te zetten en daarmee te verbinden, maar vanwege tijdnood heb ik de back-end code die de data zou versturen naar de database niet af kunnen maken.

Wat gebeurt er nu?

De antwoorden op de vragenlijst worden op dit moment nog niet opgeslagen. De bestanden die worden geüpload worden wel opgeslagen maar alleen lokaal. Ver van wat ik voor ogen had. Deze bestanden blijven wel opgeslagen in de folder die hiervoor is aangemaakt ongeacht van hoe vaak de server wordt gesloten of opnieuw wordt opgestart.

Routes

De route voor mijn upload feature is vrij simpel. De pagina met de functie wordt geladen met dank aan Express en vanaf hier kan de gebruiker door middel van het clicken op een button het proces starten. De middleware Multer initialiseert de opslag op de schijf van het apparaat waarop de site wordt gehost voor het uploaden van bestanden. Het accepteert een object met twee eigenschappen: 'destination' en 'filename'. Destination geeft aan in welke map de geüploade bestanden worden opgeslagen. In dit geval is het ingesteld op "images". Filename bepaalt de naam van het geüploade bestand. Hier wordt de huidige timestamp gecombineerd met de oorspronkelijke extensie van het bestand. Dit zorgt ervoor dat elk geüpload bestand een unieke naam krijgt op basis van de timestamp. Dankzij Multer is het aantal uploadbare bestanden beperkt tot 3 bestanden per upload.

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, "images");
  },
  filename: (req, file, cb) => {
    cb(null, `${Date.now()}${path.extname(file.originalname)}`);
  },
});

const upload = multer({ storage, limits: { files: 3 } });

Conclusie

Hoewel de functies lijken te werken vanaf een gebruikersperspectief is er nog een deel achter de schermen waar aan gewerkt moet worden voordat Fastpass online gezet kan worden voor commercieel gebruik :(.

Clone this wiki locally