MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

pourquoi est-ce que j'obtiens favicon.ico lorsque j'utilise la méthode findOne pour les routes de paramètres express?

Lorsque vous visitez un site Web (toute URL de ce site Web), un navigateur envoie généralement également une demande à ce même domaine pour /favicon.ico alors voyez si le site Web propose une icône pour être une représentation visuelle du site.

Puisque vous utilisez une route de niveau supérieur générique :

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

Cela sera touché par la demande de /favicon.ico . Certaines autres URL que vous devrez peut-être également surveiller pour être demandées sont :/robots.txt , /humans.txt , /sitemap.xml , /ads.txt .

Il existe plusieurs façons de contourner ce problème :

  1. Votre itinéraire générique peut d'abord vérifier req.url ou req.params.listRoute pour voir si c'est quelque chose qu'il doit ignorer.

  2. Vous pouvez placer d'autres itinéraires de niveau supérieur que vous souhaitez exclure de votre itinéraire générique avant cet itinéraire afin qu'ils ne se retrouvent pas dans celui-ci.

  3. N'utilisez pas une route générique de niveau supérieur. À la place, utilisez quelque chose comme /list/:listRoute il ne correspondra donc pas automatiquement à une requête http de niveau supérieur. Votre utilisation d'une route générique de niveau supérieur interfère avec d'autres utilisations futures de votre site et peut créer une rétrocompatibilité à l'avenir lorsque vous souhaitez ajouter d'autres routes de niveau supérieur à votre site. Imaginez si dans le futur, vous vouliez ajouter /contact ou /login ou /logout . Ceux-ci sont tous en conflit avec /:listRoute .