Hello guys,
I always have trouble understanding query times.
I’m trying to create a code to insert an automatically generated collection field.
To make sure the code is unique and not already present in the table, I have created a beforeInsert hook that checks this.
The problem is that it gives me this error “502: Bad Gateway.”
CODE:
import wixData from ‘wix-data’;
export function InfoCerimonie_beforeInsert(item) {
console.log(“-------------------START BEFOREINSERT-----------------”);
let i = true;
let num = 0;
function creoPassord (caratteri) {
var elencoCaratteri="abcdefghijklmnopqrNOPQRSTUVWXYZ1234567890";
var minimoCaratteri=caratteri;
var massimoCaratteri=caratteri;
var differenzaCaratteri=massimoCaratteri-minimoCaratteri;
var lunghezza=Math.round((Math.random()*differenzaCaratteri)+minimoCaratteri);
var incremento=0;
var password="";
while(incremento<lunghezza){
password+=elencoCaratteri.charAt(Math.round(Math.random()*elencoCaratteri.length));
incremento++;
}
return (password);
}
let p = new Promise(function(resolve) {
console.log("-------------------Start PROMISE P -------------------");
while (i === true) {
item.DB_CodiceCliente = creoPassord (10);
let codeClienteRows_q = wixData.query("InfoCerimonie").contains('DB_CodiceCliente', item.DB_CodiceCliente);
codeClienteRows_q.count().then(count => {
if (count === 0) {
i = false ;
resolve(item);
}
});
}
});
return p;
}
if I remove the query everything works. I do not know how to get out of it, does someone help me?
Thank You
Hi,
Your wixData query function is not processing the actual search.
Add find() at the end of the statement to initiate the search process.
wixData.query(“InfoCerimonie”).contains(‘DB_CodiceCliente’, item.DB_CodiceCliente). find()
Thanks for your answer
the search is done after with
codeClientRows_q.count (). then (count => {
However I found this solution:
import wixData from ‘wix-data’;
export function InfoCerimonie_beforeInsert(item) {
let p = null;
function creoPassord01 (caratteri01) {
var elencoCaratteri="abcdefghijklmnopqrstuvwxyz1234567890";
var incremento01=0;
var password01="";
while(incremento01<caratteri01){
password01+=elencoCaratteri.charAt(Math.round(Math.random()*elencoCaratteri.length));
incremento01++;
if (incremento01 === caratteri01) {
return (password01);
}
}
}
function creoPassord02 (caratteri02) {
var elencoCaratteri="abcdefghijklmnopqrstuvwxyz1234567890";
var incremento02=0;
var password02="";
while(incremento02<caratteri02){
password02+=elencoCaratteri.charAt(Math.round(Math.random()*elencoCaratteri.length));
incremento02++;
if (incremento02 === caratteri02) {
return (password02);
}
}
}
function creoPassord03 (caratteri03) {
var elencoCaratteri="abcdefghijklmnopqrstuvwxyz1234567890";
var incremento03=0;
var password03="";
while(incremento03<caratteri03){
password03+=elencoCaratteri.charAt(Math.round(Math.random()*elencoCaratteri.length));
incremento03++;
if (incremento03 === caratteri03) {
return (password03);
}
}
}
function creoPassord04 (caratteri04) {
var elencoCaratteri="abcdefghijklmnopqrstuvwxyz1234567890";
var incremento04=0;
var password04="";
while(incremento04<caratteri04){
password04+=elencoCaratteri.charAt(Math.round(Math.random()*elencoCaratteri.length));
incremento04++;
if (incremento04 === caratteri04) {
return (password04);
}
}
}
function promessaPassword () {
p = new Promise(function(resolve) {
item.DB_CodiceCliente = creoPassord01 (10);
item.DB_CodiceInvitato = creoPassord02 (10);
item.DB_CartellaUrlCliente = creoPassord03 (15);
item.DB_CartellaUrlInvitati = creoPassord04 (15);
let codeCliente_q = wixData.query("InfoCerimonie").eq('DB_CodiceCliente', item.DB_CodiceCliente);
let codeInvitato_q = wixData.query("InfoCerimonie").eq('DB_CodiceInvitato', item.DB_CodiceInvitato);
let CartellaCliente_q = wixData.query("InfoCerimonie").eq('DB_CartellaUrlCliente', item.DB_CartellaUrlCliente);
let DB_CartellaInvitati_q = wixData.query("InfoCerimonie").eq('DB_CartellaUrlInvitati', item.DB_CartellaUrlInvitati);
let codeBig_q = codeCliente_q.or(codeInvitato_q).or(CartellaCliente_q).or(DB_CartellaInvitati_q);
codeBig_q.count().then(count => {
if (count === 0) {
resolve(item);
} else {
promessaPassword ();
}
});
});
}
promessaPassword ();
console.log('Promessa risolta');
return p;
}
I’d like to simplify the repeated code but I do not know how to do it:
function creoPassord02 (caratteri02) {
var elencoCaratteri=“abcdefghijklmnopqrstuvwxyz1234567890”;
var incremento02=0;
var password02=“”;
while(incremento02<caratteri02){
password02+=elencoCaratteri.charAt(Math.round(Math.random()*elencoCaratteri.length));
incremento02++;
if (incremento02 === caratteri02) {
return (password02);
}
}
}
Thanks for any solution