2017-09-10 1 views
0

In meiner Disharmonie bietet, habe ich einige Codes, der (mit Teilen impertinent auf die Frage weggelassen) etwa wie folgt aussieht:node.js - nicht Variablen von äußeren Rückruf Zugriff von inneren Rückruf

run(message) { 
    [...] 

    mongoClient.connect(config.mongodb.url, function(err, db) { 
     [...] 

     var roleMessage = `\`\`\`Roles on ${message.guild.name} (use !role:add <role> to assign them):` 
     var isNotificationsEnabled = false 

     db.collection('roles').find({"sid": message.guild.id}).each(function (err, doc) { 
      [...] 

      if(doc) { 
       if(doc.rolename != '$notify') { 
        roleMessage += `${doc.rolename}\n` 
       } else { 
        isNotificationsEnabled = true 
       } 
      } else { 
       [...] 
      } 
     }) 

     [...] 
    }) 
} 

Mein Problem ist, dass Variablen aus dem Callback Call mongoClient.connect() sind nicht zugänglich aus dem inneren Callback (speziell roleMessage und isNotificationsEnabled) - Ich versuche, eine Zeichenfolge aus Datenbankelementen in einer MongoDB-Datenbank zu erstellen. Gibt es irgendeine Möglichkeit, diese Variablen zugänglich zu machen, oder gibt es einen besseren Weg, Dinge zu tun?

Vielen Dank im Voraus für alle, die Ihnen helfen können. .

Antwort

0

Es ist nichts falsch mit Javascript Sie das folgende Beispiel im Zusammenhang mit Umfang Zugriff auf Variablen sehen können,

let message = { some: 'thing' } 
let items = [ 'item1', 'item2' ] 
let something = message => { 

    let newvar = 'scope1'; 
     items.forEach(function(item) { 
     items.forEach(function(item2) { 
     console.log(item2 + ' ' + item + ' ' + newvar + ' ' + message.some) 
     }) 
     }) 

} 

something(message) 

db.collection ('Rollen') finden ({ "sid": Meldung. . guild.id}) each (function (err, doc) {

Kann keine Daten aus der Sammlung zurückkehren

+0

Es Daten aus der Sammlung der Rückkehr -. ich habe persönlich diese vorher überprüft Symptome. dass mein Code anzeigt, würde vorschlagen, dass die äußeren Variablen innerhalb des inneren Callbacks nicht zugänglich sind. – tobycode