#JS MONGOOSE:全局变量无法在从Promise函数调用的函数内更改

时间:2018-12-07 05:28:07

标签: javascript asynchronous collections mongoose-schema

目的:我想检查我正在使用的mongoDB中是否存在特定集合中的任何对象:

client.db.listCollections().toArray(function(err, collections) {
          console.log(collections);
          client.collection('usrs').countDocuments().then(function(result){
            console.log(result);
           }, function(err){
             return console.log(err);
           });
      });

如果我还没有保存任何内容,则“结果”将为0。如果我有1。 是的。

  • 现在,我创建了一个全局变量“ counter”来保存此数字 以后检查案例。
  • 因为这是一个异步函数,所以我有 做了一个“赠品(结果)”功能来捕捉另一个结果 功能。
  • 我试图将“计数器”更改为结果。

不幸的是,当我尝试console.log时,计数器没有变化。

下面是整个代码。

var counter=0;
var mongoose = require("mongoose");
  mongoose.connect("mongodb://"+process.env.IP+":27017/msn", function(err, client) {

      if(err) {
          console.log(err)
      }
      client.db.listCollections().toArray(function(err, collections) {
          console.log(collections);
          client.collection('usrs').countDocuments().then(function(result){
            console.log(result); // "1"
            counter=result;
            console.log("c:");
            console.log(counter);  //"1"
            giveaway(result);
           }, function(err){
             return console.log(err);
           });
      });


  });
console.log(counter);  //"0"

function giveaway(r)
{
  console.log(typeof(r)); //"number" checked for internal peace
  counter=r;  
  console.log(counter);   //"1"
}
console.log(counter);    //"0"

谢谢。

0 个答案:

没有答案