J'essaie de résoudre ce problème depuis deux jours maintenant et j'ai parcouru pratiquement tout ce que je peux trouver sur stackoverflow, peut-être qu'il me manque quelque chose puisque je le regarde depuis si longtemps.
J'ai un fichier nodejs qui charge les données utilisateur via SQL et envoie les résultats au fichier principal (serveur).
J'appelle à nouveau cette fonction en utilisant une fonction asynchrone pour obtenir la valeur de la ligne.
var sql = require('./db'); let h = /^[a-zA-Z-_.\d ]{2,180}$/; async function getdata(hash){ if (!hash || !hash.match(h)) { return {type: "error", msg:"Verarbeitungsfehler, bitte laden Sie die Seite neu.", admin: false} }else{ const response = await sql.query('SELECT * FROM bnutzer WHERE hash = ?',[hash], async function(err, result, fields){ //console.log(result) return await result }) } } module.exports = { getdata };
async function getvalue(h){ try{ var result = await admin.getdata(h); console.log('1'+result); if(result{ console.log('2'+result) } }catch(err){ console.log(err); console.log('Could not process request due to an error'); return; } } getvalue(user.ident)
Les données de la requête SQL sont correctes et lorsque je les affiche dans la console, elles renvoient également les résultats corrects mais ils ne sont pas renvoyés à la fonction avec laquelle j'appelle le code, ils sont simplement indéfinis et je dois attendre ici Le sentiment est en quelque sorte de ne pas attendre les résultats, qu'est-ce qui me manque ici ? Je l'ai essayé avec quelques signes du zodiaque que j'ai pu trouver en ligne, et malheureusement je n'y suis pas encore parvenu.
J'ai essayé d'écrire la requête SQL sans utiliser async/await et d'écrire simplement la fonction appelante en utilisant async/await mais sans résultat. J'ai essayé diverses requêtes SQL avec et sans rappels SQL. J'espère que quelqu'un pourra signaler quelque chose que je déforme ou que je manque ici.
La façon dont vous exécutez la requête est incorrecte, vous devriez le faire
Essayez-le, vous ne pouvez pas mélanger les rappels et les attentes comme vous l'avez fait, attendez simplement le résultat, si une erreur survient, dans ce cas elle sera gérée par le bloc catch
Dans le bon cas, votre fonction de rappel asynchrone le renverra simplement à
response
变量中。但无论如何,在嵌套异步函数中使用 return wait 并不是最好的方法。因此,您的结果
将成为响应
变量,您没有对它执行任何操作,它只会保持原样,没有返回值。因此,您将得到一个普通函数,并且由于其执行结果是undefined
. Parce que vous ne retournez rien de là.Je recommande :