[FIXED] node-postgres analysiert Abfragen nicht korrekt

Ausgabe

Ich versuche, die Anzahl der Dokumente in einer Tabelle zu zählen, die eine Bedingung erfüllen.

Mein Code im Knoten: –

const [washingCount, washedCount, dirtyCount] = await Promise.all([
        pool.query("SELECT COUNT(*) FROM clothes WHERE status = 'washing'"),
        pool.query("SELECT COUNT(*) FROM clothes WHERE status = 'washed'"),
        pool.query("SELECT COUNT(*) FROM clothes WHERE status = 'dirty'")
    ])

Aber ich bekomme die Fehlermeldung:

Fehler: Spalte “count” existiert nicht

Und wenn ich dieselbe Abfrage in die PostgreSQL-CLI kopiere, geben diese die gewünschten Ergebnisse aus.

Geben Sie hier die Bildbeschreibung ein

Den vollständigen Code finden Sie unter:- https://github.com/js313/clothio/blob/master/index.js

Fehler-Stack-Trace:-
Geben Sie hier die Bildbeschreibung ein

Was fehlt mir hier?

Vielen Dank.

Lösung

Warum nicht verwenden group by?

select status, count(*) from clothes group by status

Bearbeiten

mit einem einfachen Skript wie diesem getestet und funktioniert

require("dotenv").config({ path: "./.env" });

const Pool = require("pg").Pool;

const pool = new Pool({
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  host: process.env.DB_HOST,
  port: process.env.DB_PORT,
  database: process.env.DB_NAME,
});

async function main() {
  const result1 = await pool.query("SELECT now()");
  console.log(result1);

  const result = await pool.query(
    "SELECT status, COUNT(*) FROM clothes group by status"
  );

  console.log(result.rows);
}

main()
  .then()
  .catch((e) => console.error(e));

Bearbeiten 2

Habe das Problem in deinem Repo-Code gefunden.

Die Reihenfolge der Routenregistrierung ist wichtig, also haben Sie diese Route.

app.get("/clothes/:cloth_id", async (req, res) => {

vor der Zählung eins, also kommt der Express in diese Route und erreicht die counteine nie.

Um das Problem zu lösen, verschieben Sie die /clothes/countRoute vor die clothes/clothe_id, und das sollte das Problem lösen


Beantwortet von –
JuanDM


Antwort geprüft von –
Jay B. (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like