我的梦想是后端都不用写 curd,正在开发能大幅度减低 curd 甚至让前端来写 curd 的框架,希望大家多多关注与支持

2019-03-03 11:19:37 +08:00
 qiuxiaojie

经历了从模板渲染到前后端分离的时代,一直在苦苦思考,怎么样才能少干点活(大笑).在某天与前端对接接口时,突然顿悟,既然数据都是从 json 回去的,为什么不能直接使用类似 json 这样的语法来查询呢.在大胆的设想下,设计并实现了一套查询语法,给它起名为 orql(Object Relational Query Language 关系对象查询语言缩写).

就以 V2EX 举例说明一下它的用法

查询首页帖子列表,包括帖子标题 发布时间 回复数量 发帖人名称和头像以及节点名称:query post: [id, title, createAt, commentNum, user: {id, name, avatar}, node: {id, name}].

查看某帖子,包括帖子标题 内容 回复和回复人信息:query post(id = $id): [*, comments: [id, content, createAt, user: {id, name, avatar}], user: {id, name, avatar}]

发布一个帖子:add post: {title, content, user}

当然还支持其他的操作 update delete count 等,在模型方面支持 1:1 1:N N:M N:M 关联,更多的用法也可以通过在 github 中查看 https://github.com/orql/orql-mapper .如有兴趣者可以私聊,加微信大家交流,希望大家可以点一个 star 支持.

我的梦想是做一个可以让编程也自动化的程序员,擅长代码抽象和生成,希望有共同兴趣的人大家能一起交流.

10104 次点击
所在节点    Node.js
121 条回复
qiuxiaojie
2019-03-04 10:57:32 +08:00
@fcoolish @xmbaozi 数据查询还是在后端,语句也是在后端执行,目前计划设计的 baas 中非 curd 的功能需另编写 js 函数挂载上去实现
suikatw
2019-03-04 11:19:53 +08:00
这个想法其实是顺应了时代潮流的,并且已经有很多人在做了,一旦做成,则是在开发方式上的降维打击,值得深入思考。建议作者也可以看看 serverless
软件工程的目的之一就是尽可能的消灭脑力劳动,从脑力密集型变成劳动密集型
而绝大多数的业务开发背后主要有区别的工作就是模型设计、从一个主体转成另一个主体以及业务逻辑,那从这个角度来看,像运维、数据库 /缓存操作、负载均衡、扩容都能够抽离干净让业务无感知。做到这一步之后,具体的开发工作自然可以让不具有服务端知识的前端来完成,甚至让产品来完成,大大降低开发成本。
zhang77555
2019-03-04 11:22:27 +08:00
后端的工作不是只有 CRUD,而且只要数据库设计的够好,CRUD 基本都不占什么工作量,把这部分由前端解决反而会产生更多问题,当然项目规模小的时候根本不需要分什么前后端,这样想怎么玩都行。
qiuxiaojie
2019-03-04 11:25:50 +08:00
@suikatw 是的,谢谢你的理解,后端云化和轻量化是一种趋势,因为性能的优化和分布式拓展等等这些是与具体业务无关的,是可以透明化的,这些部分会慢慢被云端接替
KuroNekoFan
2019-03-04 11:38:27 +08:00
graphql 也是要后端做大量的工作才能实现的吧?
passerbytiny
2019-03-04 11:51:07 +08:00
@qiuxiaojie #81 没说让你生成全套界面,我说的是为 CRUD 生成全套功能——包括界面——的东西,早就有了。你最后的一句话是大误,只有 CRUD 不能叫 ORM,ORM 的全程是对象关系映射——程序中的对象与关系数据库的映射。
qiuxiaojie
2019-03-04 12:03:35 +08:00
@passerbytiny ??orql 的工作原理是将描述的结构生成 sql 去执行查询,然后再将查询结果映射回描述的结构上,所以才称为 orql,至于属不属于 orm,这就得看严格的定义了
TommyLemon
2019-03-04 12:32:59 +08:00
楼主的创造和开源精神值得鼓励。
首先一定要相对现有的开源项目有自己独特的优势,然后在平衡功能、安全、性能 时候也要深思熟虑。

可以看下这个 码云最有价值开源项目,4.9 K Star,已有多家企业公开使用
https://github.com/TommyLemon/APIJSON
jsun
2019-03-04 13:03:12 +08:00
合久必分,分久必合。生命在于折腾!
qiuxiaojie
2019-03-04 13:11:03 +08:00
@TommyLemon 是的,谢谢,相比较我们优势在于语法简洁,采用 node.js 平台,非 curd 功能拓展容易,建议可以考虑把 orql 也作为 api 配置的一种方式,使用 dsl 配置比 json 配置无论从简易性还是开发效率和一目了然都更有优势.
checkzhzzzzz
2019-03-04 13:56:35 +08:00
这个背景看到难受
TommyLemon
2019-03-04 14:52:33 +08:00
@qiuxiaojie APIJSON 不需要后端写代码就能实现 CRUD 哦
https://www.oschina.net/news/101787/apijson-3-1-0-released#comments
namebyrant
2019-03-04 14:57:24 +08:00
crud 很多时候里面都会有别的操作 同步 多线程 事务。你以为每次都是单纯的增删改查?
qiuxiaojie
2019-03-04 16:29:34 +08:00
@TommyLemon 很容易抽象泄露
guanhui07
2019-03-04 16:32:17 +08:00
很抽象
TommyLemon
2019-03-04 17:02:11 +08:00
@qiuxiaojie 具体说下?
qiuxiaojie
2019-03-04 19:19:41 +08:00
@TommyLemon 可以把微信发我邮箱 qiushijie#outlook.com 大家微信讨论讨论
sampeng
2019-03-04 22:54:49 +08:00
咋一眼看…这和 mongdb 的请求没什么区别吧…
TommyLemon
2019-03-04 23:02:00 +08:00
@qiuxiaojie
APIJSON 对安全做了大量优化,自动校验权限、自动校验数据和结构、自动防 SQL 注入 等
https://github.com/TommyLemon/APIJSON/issues/12
qiuxiaojie
2019-03-04 23:36:45 +08:00
@sampeng 有参考了 mongodb,但是它不支持多张表关联,而且写比较表达式也麻烦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/540508

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX