#JS MONGOOSE: глобальная переменная не может измениться внутри функции, которая вызывается из функции обещания - PullRequest
0 голосов
/ 07 декабря 2018

Цель: я хочу проверить, существуют ли какие-либо объекты в определенной коллекции в моем 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, если у меня есть.Который это делает.

  • Теперь я создал глобальный var "counter", чтобы сохранить этот номер для последующих проверок.
  • Поскольку это асинхронная функция, я создал функцию «Giveaway (result)», чтобы перехватить результат в другой функции.
  • Там я попытался изменить «counter» на result.

К сожалению, когда я пытаюсь открыть 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"

Спасибо.

...