Переменная имеет разные значения

30
11 июля 2018, 10:10

Имеется код который с каким-то промежутком вызывается по CRON

Он запрашивает 20 последний записей из группы в VK.COM и проверяем каждую на наличие ключевых слов, если они есть то он например отсылает оповещение, а для того чтобы не присылать оповещения снова, в Memcache ставится ключ на 7 суток который проверяется при каждом переборе.

var Memcached = require('memcached');
var memcached = new Memcached('127.0.0.1:11211');
var request = require('request');
var sync_request = require('sync-request');

...
//Формируем УРЛ для запроса записей с стены VK.COM
var wall_url = url('wall.get', 'domain=******&count=20');
//Делаем запрос
request(wall_url, function (error, response, body) {
  if(error){console.log('Error:', error);}
  //Декодим JSON
  var json_body = JSON.parse(body).response.items;
  //Перебираем в цикле каждую запись
  for (var key in json_body) {
      //Получаем из объекта запись по Key
      var obj_ = json_body[key]; 
      //Проверяем реклама ли она, является ли репостом  и подписана ли она юзером
      if(!obj_.copy_history && !obj_.marked_as_ads && obj_.signer_id){
         //Делаем Trim текста
         var text = obj_.text.trim();
         //Ижем ключевые слова в тексте 
         if(check(text)){
           var wall_id = obj_.id;
           //Проверяем мемкеш на наличие ключа, если есть то не делаем ничего
           memcached.get('w'+wall_id, function (err, data) {
            if(typeof data === 'undefined'){
                 .....Если мемкеш чист то выполняем что либо.....
                 //Помечаем в мемкеше запись "Прочитаной" на 7 дней
                 memcached.set('w'+wall_id, true, 604800, function (err) {});
            }
           });
         }
      }
  }
});

Код выше полностью работает но стоит только убрать var wall_id = obj_.id; и изменить его часть так:

       //Проверяем мемкеш на наличие ключа, если есть то не делаем ничего
       memcached.get('w'+obj_.id, function (err, data) {
        if(typeof data === 'undefined'){
             .....Если мемкеш чист то выполняем что либо.....
             //Помечаем в мемкеше запись "Прочитаной" на 7 дней
             memcached.set('w'+obj_.id, true, 604800, function (err) {});
        }
       });

Он сразу начинает работать некорректно, в Memcache создается ключ но при этом проверка на наличие ключа не срабатывает и оно заново проверяет запись, и это не удивительно ведь obj_.id перед memcached.get имеет ID не тот который в этой переменной уже после него

Например до 156236
После: 156206

156236 - запись которая была найдена
156206 - является последней перебираемой записью в цикле 
READ ALSO
Отследить открытие pop-up окна

Отследить открытие pop-up окна

Задача такая, пишу скрипт для сайта по сбору баллов, на котором по клику открывается pop-up окно с ютуб видеоМне надо как-то отследить его открытие...

49
Скрипт срабатывает только один раз на событие click

Скрипт срабатывает только один раз на событие click

Этот скрипт срабатывает один разПри клике кнопка блокируется

57
Событие “mousemove” не срабатывает

Событие “mousemove” не срабатывает

Надо, чтобы падающие черточки разлетались при наведении мыши

26
Web-Push уведомления

Web-Push уведомления

Ребят кто знает подскажите пожалуйста

58