sql >> Databáze >  >> NoSQL >> MongoDB

proč se mi zobrazuje favicon.ico, když používám metodu findOne pro expresní trasy params?

Když navštívíte web (jakákoli adresa URL na tomto webu), prohlížeč obvykle také odešle požadavek na stejnou doménu pro /favicon.ico Podívejte se tedy, zda web nabízí ikonu, která má být vizuální reprezentací webu.

Protože používáte trasu nejvyšší úrovně se zástupnými znaky:

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

To bude zasaženo požadavkem na /favicon.ico . Některé další adresy URL, na které si budete muset dávat pozor, aby byly požadovány, jsou:/robots.txt , /humans.txt , /sitemap.xml , /ads.txt .

Existuje několik způsobů, jak to obejít:

  1. Vaše trasa se zástupnými znaky může nejprve zkontrolovat req.url nebo req.params.listRoute abyste zjistili, zda je to něco, co by měl ignorovat.

  2. Další trasy nejvyšší úrovně, které chcete ponechat mimo trasu se zástupnými znaky, můžete umístit před tuto trasu, aby neskončily v této.

  3. Nepoužívejte cestu se zástupnými znaky nejvyšší úrovně. Místo toho použijte něco jako /list/:listRoute takže nebude automaticky odpovídat žádnému požadavku http nejvyšší úrovně. Vaše použití cesty se zástupnými znaky nejvyšší úrovně narušuje další budoucí použití vašeho webu a může vytvářet zpětnou kompatibilitu do budoucna, když chcete na svůj web přidat další trasy nejvyšší úrovně. Představte si, že někdy v budoucnu budete chtít přidat /contact nebo /login nebo /logout . Všechny jsou v konfliktu s /:listRoute .



  1. Navrhnout databázovou tabulku Redis jako SQL?

  2. Redis seznamy

  3. meteor dotaz pro všechny dokumenty s jedinečným polem

  4. mongoengine - Ignorujte další pole pro ověření schématu