Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Εχει νοημα ενα πληρως dynamic prepared statement σε postgresql ? Να μην ειναι dynamic μονο το WHERE και τα values, αλλα και το table και τι θα κανει select.

Εχω node + express + postgresql + pg module, αλλα νομιζω οι αρχες ειναι ιδιες παντου , ανεξαρτητως stack. Εχω το εξης απλο, συμφωνα με το pg

//dynamic that can change 
let select = 'name , email, age';
let table = 'user';
let where = 'id=$1 AND gender=$2';
let values = [1,'female'];

//prepare
const query = {
  // give the query a unique name  
  name: 'fetch-user',
  text: 'SELECT' + select + 'FROM' + table + 'WHERE' + where,
  values: values
}

//execute
client.query(query)
  .then(res => console.log(res.rows[0]))
  .catch(e => console.error(e.stack))

Απο οτι εχω καταλαβει απο το documentation, για να ειναι αποδοτικο ενα prepared statement και να μπορει να γινει σωστο planning, τοτε πρεπει να ειναι δυναμικα μονο το WHERE και τα values.

Αν πρεπει να κανει καθε φορα εξαρχης figure out γιατι πεδια και table μιλαμε, τοτε η ταχυτητα του πεφτει, οποτε χανει και το νοημα του.

Ειναι οντως ετσι? Να κρατησω την παραπανω δυναμικη συνταξη? Η να ανταλλαξω το DRY για να φτιαξω ξεχωριστα queries για καθε ξεχωριστο πινακα?

Ευχαριστω

Επεξ/σία από kordoni
Δημοσ.

Αυτό που έχεις δεν είναι δυναμικό με την έννοια της λέξης που χρησιμοποιείς παραπάνω. Δεν την ενδιαφέρει τη βάση ούτε και έχει τρόπο να ξέρει αν πώς έφτιαξες το string της sql πριν το στείλεις. Το μόνο που ενδιαφέρει είναι οι placeholders.

Δημοσ.

Παιζει μην εχω γινει σαφης εγω. Το παρακατω

//dynamic that can change 
let select = 'name , email, age';
let table = 'user';
let where = 'id=$1 AND gender=$2';
let values = [1,'female'];

θα αλλαζει, αναλογα με το σε ποια function ειμαι πχ

//dynamic that can change 
let select = 'id , description, color';
let table = 'product';
let where = 'category=$2';
let values = [28];

Αν ακομα και ετσι, ισχυουν αυτα που ειπες παραπανω, τοτε μπορω να εχω prepared statements με διαφορετικες τιμες.

 

Ευχαριστω και παλι

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...