2017-10-24 3 views
0

Wenn ich eine Eigenschaft in robot.brain im Körper meines Skripts module.exports initiiere, funktioniert es nicht (siehe Code unten). Wenn ich es während der Antwort initialisiere, funktioniert es. Ist meine Hypothese, dass es von hubot-redis-brain korrekt überschrieben wird? Wie repariere ich es auf eine nette Art und Weise?Wenn ich einen Wert in robot.brain zu früh setzen, wird es von hubot-redis-brain überschrieben

module.exports = (robot) => { 
    robot.logger.debug("Setting the fucking property"); 
    robot.brain.set("stringproperty", "stringvalue"); 
    robot.logger.debug("SET!"); 
    // logs these two entries before 'INFO hubot-redis-brain: Data for hubot brain retrieved from Redis' 

    const respondAndLog = (res, message) => { 
     robot.logger.debug("Responding: " + message); 
     res.reply(message); 
    }; 

    robot.respond(/get_stringproperty/, (res) => { 
     respondAndLog(res, `${robot.brain.get("stringproperty")}`); 
     // prints null. WTF? 
    }); 

    robot.respond(/get_laterinitializedproperty/, (res) => { 
     robot.brain.set("laterinitializedproperty", "laterinitializedvalue"); 
     respondAndLog(res, `${robot.brain.get("laterinitializedproperty")}`); 
    // prints laterinitializedproperty, works OK 
    }); 
}; 

Antwort

1

hubot-redis-brain macht robot.brain eine "connected" Ereignis auszusenden, wenn die Daten von redis oder initialisiert geladen wird, siehe [https://github.com/hubotio/hubot-redis-brain/blob/487dd4a9641f35ffb5ae18fb5e1b09e8114c4b70/src/redis-brain.js#L55](see Zeilen 55 und 59). So sollte es behoben sein:

robot.brain.on("connected",() => { 
    robot.logger.debug("Setting the fucking property"); 
    robot.brain.set("stringproperty", "stringvalue"); 
    robot.logger.debug("SET!"); 
}); 
Verwandte Themen