Ошибка java.lang.StackOverflowError при выполнении анализа настроений на Spark (из-за функции карты)

Сохраните счет, когда вы идете, и используйте валидацию для его принудительного применения. Я взломал это вместе - за счет подсчета уникальных голосов и подсчетов, которые продолжают расти! Но на этот раз я опробовал свое предложение! (несмотря на ошибки вырезания / вставки!).

Здесь «трюк» должен использовать узел priority в качестве количества голосов ...

данные:

vote / $ issueBeingVotedOn / user / $ uniqueIdOfVoter = thisVotesCount, priority = thisVotesCount vote / $ issueBeingVotedOn / count = 'user /' + $ idOfLastVoter, priority = CountofLastVote

,"vote": {
  ".read" : true
  ,".write" : true
  ,"$issue" : {
    "user" : {
      "$user" : {
        ".validate" : "!data.exists() && 
             newData.val()==data.parent().parent().child('count').getPriority()+1 &&
             newData.val()==newData.GetPriority()" 

пользователь может голосовать только один раз & amp; & amp; & amp; счет должен быть выше, чем текущий счетчик & amp; & amp; значение данных должно быть таким же, как и приоритет.

      }
    }
    ,"count" : {
      ".validate" : "data.parent().child(newData.val()).val()==newData.getPriority() &&
             newData.getPriority()==data.getPriority()+1 "
    }

count (последний избиратель действительно) - голос должен существовать и его счет равен newcount, & amp; & amp; newcount (priority) может подниматься только на один.

  }
}

Тестовый скрипт для добавления 10 голосов разными пользователями (для этого примера фальшивка id должна быть выполнена пользователем auth.uid в процессе производства). Counting by (i--) 10, чтобы увидеть, что проверка не выполнена.

<script src='https://cdn.firebase.com/v0/firebase.js'></script>
<script>
  window.fb = new Firebase('https:...vote/iss1/');
  window.fb.child('count').once('value', function (dss) {
    votes = dss.getPriority();
    for (var i=1;i<10;i++) vote(dss,i+votes);
  } );

function vote(dss,count)
{
  var user='user/zz' + count; // replace with auth.id or whatever
  window.fb.child(user).setWithPriority(count,count);
  window.fb.child('count').setWithPriority(user,count);
}
</script>

Здесь «риск» заключается в том, что голосование выполняется, но счет не обновляется (сбой или сбой сценария). Вот почему голоса имеют уникальный «приоритет» - сценарий должен действительно начинаться с того, что нет голоса с приоритетом выше текущего счета, если он должен завершить эту транзакцию, прежде чем делать это самостоятельно - попросите своих клиентов очистить для вас:)

Счет должен быть инициализирован с приоритетом перед запуском - forge не позволяет вам это делать, поэтому необходим скрипт-заглушка (до того, как валидация будет активна!).

0
задан S.P 29 March 2019 в 14:51
поделиться