尝试在 Ruby on Rails API 中学习 GraphQL 我正在使用 graphql gem。
在这个例子中,我有产品和评论,产品可以有很多评论,评论属于一个产品。评论有评论:字符串和星星:int。我的一切正常,所以我可以退回所有带有所有评论的产品。我也知道如何退回带有所有评论的单个产品。
我现在追求的是所有产品,然后是所有评分大于 3 的评论。
所以我会假设类似
{
products{
reviews(where: "stars< 3") {
stars
}
}
}
但我想
{
products{
reviews {
stars
}
}
}
如果可能的话,也要工作并返回所有评论
我见过的大多数教程都是在 js 中...使用一些 -> resolver(obj,arg,ctx) 语法,看起来对 ruby 不再有效。
还是通用抓取所有记录。
查询类型.rb
field :product, ProductType, null: false, description: "find product by id"do
argument :id, ID, required: true
end
field :products, [ProductType], null: false
def products
Product.all
end
def product(id:)
Product.find(id)
end
product_type.rb
module Types
class ProductType < Types::BaseObject
description " A product"
field :id, ID, null: false
field :title, String, null: false
field :category, Types::CategoryType, null: false
field :reviews, [Types::ReviewType], null: false
end
end
review_type.rb
module Types
class ReviewType < Types::BaseObject
field :id, ID, null: false
field :content, String, null: false
field :stars, Integer, null: false
field :product, Types::ProductType, null: false
end
end
我希望能够通过评论并获得所有评论,但也希望能够在其中使用 where 子句。
这样做的最佳方法是什么?