在graphql-ruby repo中,布尔类型如下所示:
String classes= getDriver().findElement(someSelector).getAttribute("class");
Optional<String> classFindResult = Arrays.stream(elementClasses.split(" ")).filter(el -> el.equals("myClass")).findFirst();
if(openClassFindResult.isPresent()){
return true;
}
return false;
但是当我查询一个从数据库返回nil的布尔字段时,我得到null。
在我的笔记类型中,我已将graphql字段与我在数据库中的布尔属性直接耦合。
GraphQL::BOOLEAN_TYPE = GraphQL::ScalarType.define do
name "Boolean"
description "Represents `true` or `false` values."
coerce_input ->(value, _ctx) { (value == true || value == false) ? value : nil }
coerce_result ->(value, _ctx) { !!value }
default_scalar true
end
有人可以解释一下这个问题并提出一个不涉及改变所有领域的解决方案吗?
答案 0 :(得分:0)
默认GraphQL::BOOLEAN_TYPE
每当给出非布尔值时返回nil,如下所示:https://github.com/rmosolgo/graphql-ruby/blob/7f7e97cc2902046d485adcb6e8e6a5eb462b3faf/spec/graphql/boolean_type_spec.rb
所以这里可能会发生的事情是types.Boolean
仍然映射到旧的GraphQL::BOOLEAN_TYPE
,而不是使用新的覆盖。