簡體   English   中英

node.js-無法從內部回調訪問外部回調的變量

[英]node.js - cannot access variables of outer callback from inner callback

在我的不一致機器人中,我有一些看起來像這樣的代碼(省略了與問題無關的部分):

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 {
                [...]
            }
        })

        [...]
    })
}

我的問題是,無法從內部回調(特別是roleMessageisNotificationsEnabled )內部訪問mongoClient.connect()回調中的變量-我正在嘗試從MongoDB數據庫中的數據庫元素中構建字符串。 有什么辦法可以使這些變量可訪問,還是有更好的處理方式?

預先感謝任何可以提供幫助的人。

沒有什么錯與JavaScript下面你可以看到相關的例子對變量的作用域訪問,

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( '角色')找到({ “SID”:message.guild.id})。每個(函數(ERR,DOC){

可能不會從集合中返回任何數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM