Tencent/APIJSON

楼主这个和prisma有什么不同,两个都不了解,求比较一下

zwl1619 opened this issue · 2 comments

楼主这个和prisma有什么不同,两个都不了解,求比较一下:

https://github.com/prismagraphql/prisma

Prisma是一个ORM库,用于实现SQL语句的封装。
需要后端针对每个需求都写封装SQL语句的代码哦
https://github.com/prismagraphql/prisma/blob/master/examples/application-server/generated-schema.graphql
查询:

type Query {
  posts(where: PostWhereInput, orderBy: PostOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Post]!
  users(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [User]!
  post(where: PostWhereUniqueInput!): Post
  user(where: UserWhereUniqueInput!): User
  postsConnection(where: PostWhereInput, orderBy: PostOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): PostConnection!
  usersConnection(where: UserWhereInput, orderBy: UserOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): UserConnection!

  """Fetches an object given its ID"""
  node(
    """The ID of an object"""
    id: ID!
  ): Node
}

增删改:

type Mutation {
  createPost(data: PostCreateInput!): Post!
  createUser(data: UserCreateInput!): User!
  updatePost(data: PostUpdateInput!, where: PostWhereUniqueInput!): Post
  updateUser(data: UserUpdateInput!, where: UserWhereUniqueInput!): User
  deletePost(where: PostWhereUniqueInput!): Post
  deleteUser(where: UserWhereUniqueInput!): User
  upsertPost(where: PostWhereUniqueInput!, create: PostCreateInput!, update: PostUpdateInput!): Post!
  upsertUser(where: UserWhereUniqueInput!, create: UserCreateInput!, update: UserUpdateInput!): User!
  updateManyPosts(data: PostUpdateInput!, where: PostWhereInput): BatchPayload!
  updateManyUsers(data: UserUpdateInput!, where: UserWhereInput): BatchPayload!
  deleteManyPosts(where: PostWhereInput): BatchPayload!
  deleteManyUsers(where: UserWhereInput): BatchPayload!
}

更新:
以上链接已失效,官方迁移了 examples,可以参考
https://github.com/prisma/prisma-examples/blob/master/node/docker-mysql/src/script.js
https://github.com/prisma/prisma-examples/blob/master/node/docker-mysql/src/generated/prisma-client/prisma-schema.js

而APIJSON是完全自动化生成SQL语句的,后端不需要写相关代码。
前端按照 设计规范 来请求,后端会完全自动解析成SQL语句去连接数据库执行,并返回和Request JSON结构完全对应的Response JSON
这是APISJONAuto接口在线工具,文档上给出的表和字段随便试,任何结构任何数据都支持。
http://apijson.org/auto

@zwl1619 APIJSON Node 版本也出来了,语言一样,你可以具体对比下。
目前在初期阶段,用了 TypeORM,所以需要写 Model 类(Java 版不需要)。

apijson-node 支持单表、关联、数组、分页查询等,有比较完善的文档,
我测试过,除了项目提供的表有 utf8 编码问题导入不了 (用我自己的表测试可以),其它都可用。
作者是微医的,已经写了不少测试用例,在他公司内部用起来了。

点 Star 鼓励作者继续完善吧 ^_^
https://github.com/kevinaskin/apijson-node