Как проверить перечисления из файла CTO в операторе if в файле logic.js - PullRequest
0 голосов
/ 25 августа 2018

Если у меня есть простой enum в файле .cto, например:

enum STATUS {
    o ACTIVE
    o INACTIVE
}

И пользователь

participant User identified by name{
    o String name
    o STATUS status
}

Как проверить статус в функции, такой как:

transaction isActive {
    o User user
}

В файле logic.js будет такой код:

return getParicipantRegistry(NS + '.User'){
    .then(function(userRegistry) {
        var u = userRegistry.get(user.name)
        if (u.isActive == 'ACTIVE')
            //some code
    })

Моя ситуация немного сложнее (перечисление с 6 типами), но я попытался упростить ее, чтобы логика была такой же.

1 Ответ

0 голосов
/ 25 августа 2018

Попробуйте это.

изменить пользователя в транзакции на отношения

transaction isActive{
-->User user
}

Теперь в logic.js вы можете получить статус пользователя, например

    /**
     * checkStatus
     * @param {org.test.isActive} checkStatus // use your namespace instead of org.test
     * @transaction
     */
    function checkStatus(txParams){
      // txParams are the parameters given when the transaction is submitted
      // you can access user details by txParams.user
      if(txParams.user.status == "ACTIVE"){
        // do something
      }
     // then you can update the user by 
     return getParticipantRegistry(NS+'.User').then(function(userRegistry){
          // or you can also check status directly here and do something
          return userRegistry.update(txParams.user)
      })

    }
...