因此,我正在构建一个应用程序,其中有一个用Rails编写的后端和一个用Vue编写的带有Amplify的客户端。我的数据库是MySQL,我正在使用带有GraphQL作为数据源(指向我的数据库)的AWS AppSync。
AWS Amplify有一个框架,使我可以使用一个简单的命令amplify api add-graphql-datasource
根据表名和列来生成模式。但是因为我使用的是Rails迁移,所以我的数据库使用的是Rails约定:带有蛇形列的复数表。
现在,问题在于GraphQL模式非常丑陋,并且没有使用正确的约定(类型和输入的单数名称,带有驼峰式道具)。示例:
我的后端进行了以下迁移:
class CreatePosts < activeRecord::Migration[6.0]
def change
create_table :posts do |t|
t.belongs_to :site,null: false
t.string :title
t.string :url
t.text :body
t.timestamps
end
end
end
为此生成的模式是:
type posts {
id: Int!
site_id: Int!
title: String
url: String
body: String
created_at: AWSDateTime!
updated_at: AWSDateTime!
}
type Query {
getPosts(id: Int!): posts
listPostss: [posts]
// ...
}
schema {
query: Query
// ...
}
更何况:
input CreatepostsInput {
id: Int!
site_id: Int!
title: String
url: String
body: String
created_at: AWSDateTime!
updated_at: AWSDateTime!
}
因此,AWS Amplify是新功能,还不如Rails成熟,最重要的是,我没有找到任何适配器或转换器来处理客户端中的问题……我希望找到一种处理它的方法。在Rails上。
我需要能够完全更改Rails约定而不破坏任何内容:迁移,关联,如何管理关联(create_xxx,build_xxx)。
此应用真的很新,因此我可以从头开始重新创建所有迁移。
谢谢