So generieren Sie eine neue uuid oder md5 zufällig, um auf postgresql zu speichern, zum Beispiel:
Aber die 'knex.raw('uuid_generate_v4()')' funktioniert nicht, ich frage mich, wie ich einen zufälligen Hash generieren und beim Erstellen eines neuen Datensatzes automatisch speichern kann?
und es scheint auch, dass uuid-v4 aufgrund der Migration, die für jede Anforderung statisch und unverändert ist, keinen Zufall generieren kann.
Tut mir leid, ich studiere Knoten aufgrund eigener und meine einzige Hilfe ist Google und Github, ich danke Ihnen für Ihre Hilfe.
Was ist der Grund dafür
Aber die 'knex.raw('uuid_generate_v4()')'
Funktioniert nicht? Funktioniert das mit Postgrsql, wenn Sie versuchen, es mit normalem SQL ohne Knex zu verwenden?
Versuchen Sie auch, Ihren Code mit dem Umgebungsvariablensatz DEBUG= knex:* auszuführen, um mehr Informationen darüber zu erhalten, was mit Ihren Abfragen los ist.
@anzileiro , Sie sollten das Paket uuis-v4
nicht in Migrationen verwenden, aber in Ihren Modellen, zum Beispiel vor dem Speichern eines neuen Modells, dessen Eigenschaft hash
auf den Wert von uuid()
setzen und dann speichern
Sie müssen sicherstellen, dass die Erweiterung verfügbar ist:
knex.raw('create extension if not exists "uuid-ossp"')
dann kannst du das machen
table.string('hash').defaultTo(knex.raw('uuid_generate_v4()'))
down
Migration nicht vergessen:
knex.raw('drop extension if exists "uuid-ossp"')
Bearbeiten: Sie können den uuid-Typ anstelle der Zeichenfolge verwenden, wenn Sie pg verwenden, z. B.:
await knex.schema.createTable('Users', t => {
t.uuid('id').defaultTo(knex.raw('uuid_generate_v4()'))
// ...
})
Danke @fl0w , Fall geschlossen ☺️
Danke Leute!
👍
Hilfreichster Kommentar
Sie müssen sicherstellen, dass die Erweiterung verfügbar ist:
dann kannst du das machen
down
Migration nicht vergessen:Bearbeiten: Sie können den uuid-Typ anstelle der Zeichenfolge verwenden, wenn Sie pg verwenden, z. B.: