le rappel n'est pas une fonction node js
Je suis nouveau sur le javascript et j'ai du mal à résoudre cette erreur. Je reçois le message: "le rappel n'est pas une fonction" à:"de retour de rappel(rolesArray)".
JS:
Rol.getAllRoles = function(callback){
sql = "select role from Role;";
var rolesArray = [];
var role;
mysql.connection(function(err,conn){
if (err){
return callback(err);
}
conn.query(sql,function(err,rows){
if (err){
return callback(err);
}
for(var i=0; i < rows.length; i++){
role = rows[i].role;
rolesArray.push(rol);
}
console.log("roles: " + rolesArray);
return callback(rolesArray);
});
});
}
La console.journal des sorties:"les rôles: admin,le client si la connexion avec la base de données fonctionne.
- comment appelez-vous
Rol.getAllRoles
, aparently est que vous n'êtes pas le passage d'un rappel - Bienvenue à débordement de pile. Une chose que vous devriez savoir au sujet d'un débordement de pile, c'est que lorsque vous postez une question, votre meilleure chance pour une réponse dans les 30 premières minutes après l'affichage (c'est quand la plupart des gens à voir, surtout si votre question est sur une longue balise). Ainsi, lorsque quelqu'un s'engage avec votre question à vous demander quelque chose à ce sujet, vous devez être là pour répondre à cette observation. Ce n'est pas comme les autres forums en ligne où vous postez une question et de revenir le lendemain. Votre question pourrait être fermé à l'intérieur d'un court laps de temps si elle n'est pas entièrement clair et vous n'êtes pas près de le préciser.
- Donc, cela fait maintenant plus d'une heure depuis que vous avez posté et on vous a demandé des précisions sur votre question et vous n'avez pas répondu. Nous vous suggérons de visiter au moins quelques fois dans le premier 15 à 30 minutes après avoir demandé à assurez-vous que votre question a été comprise et d'interagir avec n'importe qui qui est de poser des questions ou de poster des réponses. C'est la façon dont vous nous assurer de bien comprendre votre question et que les réponses vont dans la bonne direction.
Vous devez vous connecter pour publier un commentaire.
Cette erreur signifie que vous n'êtes pas passage d'une fonction à
Rol.getAllRoles(fn)
quand vous l'appelez.En plus, de sorte que vous pouvez avoir une bonne gestion des erreurs dans votre fonction de rappel et de sorte que vous pouvez plus facilement faire la distinction entre une erreur et les données réelles, vous devez toujours passer un premier argument de la fonction de rappel qui indique si il y a une erreur ou pas, puis le deuxième argument (si ce n'est une erreur) peut être vos résultats tableau comme ceci:
Et, ensuite, vous devriez être en l'appelant comme ceci:
Ce style d'appeler un async rappel que dans
callback(err, data)
est un très commun async rappel de modèle de conception. Il permet à tous les appelants pour voir si il y a une erreur ou pas et si il n'y avait pas d'erreur pour obtenir l'accès au résultat final.Je vous suggère le texte suivant:
JS:
De cette façon vous assurer que le rappel est toujours une fonction. Si vous l'exécutez comme Rol.getAllRoles() alors, vous obtiendrez une erreur précédemment. Maintenant, vous ne. Vous ne obtenir des données en retour si.
Assurez-vous que vous appelez Rol.getAllRoles avec le bon paramètre (c'est à dire: une fonction).