Cita:
Iniciado por kikeking1 No termino de entender tu problema amigo, ¿Que te ocurre exactamente? ¿Que no te devuelve el "true/false"?
No he probado el codigo, pero ojeando por encima no veo nada mal en el. Y que el resultado te lo delvuelva al final de todos los callback, es correcto, pues si se devolviera antes, podria ocurrir que el fs aún estubiera leyendo el archivo y no tendrías los valores para comprar.
Asumiendo, que el archivo de los baneado existe (y esta bien referenciado), que se lee y se splitea correctamente y en los consoles log que tienes puesto aparecen los valores que esperas, no debería haber impediento para que se devolviera el "true" si procede invocando a la función.
Concreta un poco más tu duda o tu problema, y podremos ayudarte mejor.
A ver el problema es que todo esta bien pero esto B]if(bannedips[a]==ip)return true;[/B] lo compruebo dentro de la funcion cellback de
fs.read(fd,buffer,0,buffer.length,null,function(er r,bytesRead,buffer){
Con lo que si se cumple la condicion anterior la funcion de fs.read devuelve el valor true pero no la funcion de isBanned(); ya que para que la funcion isBanned devuelva true debe de ser algo como esto:
Código Javascript
:
Ver originalmodule.exports={
isBanned:function(ip){
var fs=require('fs');
var fileName='./views/bannedList.txt';
fs.exists(fileName,function(exists){
if(exists){
fs.stat(fileName,function(err,stats){
if(err)throw err;
fs.open(fileName,'r',function(err,fd){
var buffer=new Buffer(stats.size);
fs.read(fd,buffer,0,buffer.length,null,function(err,bytesRead,buffer){
bannedips=buffer.toString('utf8',0,buffer.length);
bannedips=bannedips.split('|||');
for(var a=0;a<bannedips.length;a++){
console.log(ip);
console.log(bannedips[a]);
if(bannedips[a]==ip)return true;//Aqui devuelvo true pero en la funcion cellback de fs.read y yo quiero hacer lo en la funcion isBanned
}
return false;
});
});
});
}else{
console.log('Banned file don\'t exists. Exit program!');
process.exit(code=0);
}
});
return true;//>>>Aqui devuelve true la funcion isBanned y no la funcion cellback de fs.read
}
}
Ahora me he explicado bien ??
Saludos