Wie verwende ich Abfrageparameter in Nest.js?

Lesezeit: 2 Minuten

Benutzeravatar von Eve-Sama
Eva-Sama

Ich bin ein Neuling in Nest.js.

Und mein Code wie unten

  @Get('findByFilter/:params')
  async findByFilter(@Query() query): Promise<Article[]> {

  }

Ich habe benutzt postman um diesen Router zu testen

http://localhost:3000/article/findByFilter/bug?google=1&baidu=2

Eigentlich kann ich das Abfrageergebnis erhalten { google: '1', baidu: '2' }. Aber ich bin nicht klar, warum die URL eine Zeichenfolge hat 'bug'?

Wenn ich dieses Wort einfach so lösche

http://localhost:3000/article/findByFilter?google=1&baidu=2

dann zeigt der Postbote statusCode an 404.

Eigentlich brauche ich das Wort nicht bugwie man den Router anpasst, um mein Ziel genauso zu realisieren http://localhost:3000/article/findByFilter?google=1&baidu=2

Hier ist eine andere Frage, wie man mehrere Router auf eine Methode verweisen lässt.

Benutzeravatar von Kim Kern
Kim Kern

Parameter abfragen

Sie müssen entfernen :params damit es wie erwartet funktioniert:

@Get('findByFilter')
async findByFilter(@Query() query): Promise<Article[]> {
  // ...
}

Pfadparameter

Das :param Syntax ist für Pfadparameter und stimmt mit jeder Zeichenfolge in einem Pfad überein:

@Get('products/:id')
getProduct(@Param('id') id) {

passt zu den Strecken

localhost:3000/products/1
localhost:3000/products/2abc
// ...

Platzhalter für Routen

Um mehrere Endpunkte derselben Methode zuzuordnen, können Sie Routenplatzhalter verwenden:

@Get('other|te*st')

wird passen

localhost:3000/other
localhost:3000/test
localhost:3000/te123st
// ...

  • freut mich dich wieder zu sehen. Ihre Lösung funktioniert für mich. Übrigens, kannst du mir eine E-Mail oder etwas anderes anbieten, du weißt, dass ich ein Neuling in Nest and Typeorm bin. Aber manchmal muss ich mit einigen Problemen konfrontiert werden, ich werde eine neue Frage zum Stapelüberlauf erstellen. Ich will dir den Link schicken, wenn es dir nichts ausmacht.

    – Eva-Sama

    3. März 2019 um 14:59 Uhr


  • Froh, dass ich helfen konnte! 🙂 Keine Sorge, ich überprüfe regelmäßig alle Fragen zu nest.js. Achte aber darauf, das richtige Tag zu verwenden [nestjs] Anstatt von [nest].

    – Kim Kern

    3. März 2019 um 15:21 Uhr


  • Tolle Antwort.

    – Amiga500

    6. August 2020 um 9:42 Uhr

Wenn Sie Ihren Parameter als Teil oder URL haben: /articles/${articleId}/detailswürden Sie @Param verwenden

@Get('/articles/:ARTICLE_ID/details')
async getDetails(
    @Param('ARTICLE_ID') articleId: string
)

WENN Sie Abfrageparameter bereitstellen möchten /article/findByFilter/bug?google=1&baidu=2Du könntest benutzen

@Get('/article/findByFilter/bug?')
async find(
    @Query('google') google: number,
    @Query('baidu') baidu: number,
)

  • Exzellent. Vielen Dank!

    – Rinogo

    23. Oktober 2021 um 17:57 Uhr

wir können @Req() verwenden

@Get(':framework')
getData(@Req() request: Request): Object {
    return {...request.params, ...request.query};
}

/nest?version=7

{
    "framework": "nest",
    "version": "7"
}

Weiterlesen

  • Ich musste diesen Code einfügen… import { Request } from ‘express’; …oben auf dem Skript, damit dies funktioniert!

    – Jonathan Martins

    30. Mai 2020 um 0:38 Uhr


  • @JonathanMartins Fühlen Sie sich frei, meine Antwort zu bearbeiten

    – Dmitri Grinko

    10. Januar um 5:09 Uhr

Du kannst den … benutzen @Req decorator und use param object, siehe:

@Get()
  findAll(
    @Req() req: Request
  ): Promise<any[]> {
    console.log(req.query);
    // another code ....
  }

1404370cookie-checkWie verwende ich Abfrageparameter in Nest.js?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy