OrientDB: оператор И във функцията eval().

Имаме много сложна заявка и използваме функцията eval(), за да оценим някои данни.

Но изглежда операторът И не се обработва правилно в eval().

Например:

if(eval('#20:34 IN out[@class='attempts'].in.@rid AND \'b\' IN out[@class='attempts'].choice'), true, false) as attempt_b

В този пример очакваме да получим само данните с @rid от #20:34 И със свойство „избор“ от „b“, което трябва да се върне към true

"out" поле там е $current.@rid на нашата SELECT заявка.

Това са примерните данни:

out ------  in  ---- choices
14:3 ---- 20:34 ------ b
14:4 ---- 20:34 ------ a
14:7 ---- 20:34 ------ c
14:8 ---- 20:34 ------ d

Ex: if(eval('#20:34 IN out[@class='attempts'].in.@rid AND \'" + choice + "\' IN out[@class='attempts'].choice'), true, false) as attempt_choice

1.) $current.@rid = #14:3 and choice is 'a'

Return Output: true
Expected output: false (since there is no #20:34 with a choice of "A" in current.@rid which is #14:3)

2.) $current.@rid = #14:3 and choice is 'b'

Return Output: true
Expected output: true

3.) $current.@rid = #14:3 and choice is 'c'

Return Output: true
Expected output: false (since there is no #20:34 with a choice of "c" in current.@rid which is #14:3)

4.) $current.@rid = #14:3 and choice is 'd'

 Return Output: true
 Expected output: false (since there is no #20:34 with a choice of "d" in current.@rid which is #14:3)`

Не знам дали това е само проблемът с нашата заявка или в orientdb. Ще бъде от голяма полза, ако някой може да ме насочи към това, което искаме да постигнем.


person Junnel Gallemaso    schedule 30.04.2013    source източник


Отговори (1)


Мисля, че това е проблем с кавичките: вие се интересувате от избягването на „b“, но не и от останалото. Опитайте нещо като:

if(eval("#20:34 IN out[@class='attempts'].in.@rid AND 'b' IN out[@class='attempts'].choice"), true, false) as attempt_b
person Lvca    schedule 01.05.2013