sql >> Databasteknik >  >> NoSQL >> MongoDB

varför får jag favicon.ico när jag använder findOne-metoden för express params-rutter?

När du besöker en webbplats (valfri URL på den webbplatsen) skickar en webbläsare vanligtvis också en begäran till samma domän för /favicon.ico så se om webbplatsen erbjuder en ikon som är en visuell representation av webbplatsen.

Eftersom du använder en rutt på toppnivå med jokertecken:

app.get('/:listRoute', ...)

Det kommer att drabbas av begäran om /favicon.ico . Några andra webbadresser som du också kan behöva se upp för att de efterfrågas är:/robots.txt , /humans.txt , /sitemap.xml , /ads.txt .

Det finns ett antal sätt att kringgå detta:

  1. Din jokerteckenrutt kan först kontrollera req.url eller req.params.listRoute för att se om det är något den bör ignorera.

  2. Du kan placera andra topprutter som du vill hålla borta från din jokerteckenrutt i en position före den här rutten så att de inte hamnar på den här.

  3. Använd inte en toppnivå med jokertecken. Använd istället något som /list/:listRoute så det matchar inte automatiskt någon http-förfrågan på toppnivå. Din användning av en rutt med jokertecken på toppnivå stör andra framtida användningar av din webbplats och kan skapa bakåtkompatibilitet framöver när du vill lägga till andra rutter på toppnivå till din webbplats. Föreställ dig om du någon gång i framtiden vill lägga till /contact eller /login eller /logout . De är alla i konflikt med /:listRoute .



  1. Skapa MongoDB ObjectID från tidigare datum med hjälp av PHP-drivrutinen

  2. Django REST-ramverket svarar fortfarande med cachad data även efter att ha haft tomma redis-nycklar

  3. Migrera data från PostgreSQL till MongoDB

  4. MongoDB Index Builds – Förhindrar användare från att utlösa nya byggnader