【问题标题】:How can I get data in callback mongodb and Put in a variable? , javascript如何在回调 mongodb 中获取数据并放入变量中? , javascript
【发布时间】:2021-07-30 20:54:32
【问题描述】:
   await mongodb.connect(process.env.MongoUrl , async (err, c)=>
   {
    if(err){console.log(err)}
    var GetData = c.db("Data").collection("Servers")
    const Server = await GetData.findOne({IdServer:id}).then(r => {return r})
    if(Server != null)
    {
    return callback(Server.prefix)
    }
    else
    {
    GetData.insertOne({IdServer:id,Sersial:false,JoinServerHistory:new Date().toLocaleDateString(),History:"-",prefix:"-",caunt:50})
    return callback("")
    }
  })
}

const Prfix = GetPrfix("9273490839208409" , (r) => {console.log(r)})

/////// ^

【问题讨论】:

    标签: javascript mongodb mongoose callback


    【解决方案1】:

    最好的办法是先声明,然后赋值:

    var newVar = null;
    await mongodb.connect(process.env.MongoUrl , async (err, c)=>
       {
        if(err){console.log(err)}
        var GetData = c.db("Data").collection("Servers")
        const Server = await GetData.findOne({IdServer:id}).then(r => {newVar = r;}) // Right here is the magic
        // ... SOME MORE CODE
      })
    }
    // You can use `newVar` here as `r`.
    

    【讨论】:

    • 感谢您对我的帮助,但如果我在 MongoDB 之外执行 console.log,它在 MongoDB 内的工作很可能值为 null,
    • 那是因为 JavaScript 是异步的,所以在分配newVar 之前,它会移动到下一部分。您可以使用 async/await、promises 或使用 deasync。
    猜你喜欢
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多