我正在使用项目的查询构建器knex,但是在使用连接时我遇到了问题,您需要手动配对相关数据或执行单独的查询并绑定相关数据,以便我可以使用考虑使用ORM,但在某个地方,我听说它们较慢,并且使用循环进行查询,我使用nodejs,因此它可以阻止线程,因此值得使用ORM或更好的配合自己加入数据?
答案 0 :(得分:2)
您应该尝试使用ORM并在没有ORM的情况下使用纯SQL。你会看到99%[1]的时间你最好用ORM。很少有项目如此简单,以至于使用ORM并不是有益的。
您听到的人是错的,或者他们使用的是错误的ORM,或者他们未能正确使用他们选择的ORM。良好的ORM使用图形算法对其数据方法进行了很好的调整实现,以便通过尽可能少的查询来获取用于获取所请求数据的最佳查询数。它不会阻止事件循环,除非你自己在查询生命周期钩子中做了一些缓慢的阻塞代码。
我多次遇到这种对ORM的误解,认为它们会限制你进行有效查询的能力,但并非所有ORM都是如此。
Node.js具有很少的轻量级ORM,可以很容易地执行常见的ORMy任务,但它们不会强迫您抽象SQL。你仍然可以随时掌握SQL的全部功能,甚至是原始查询,但是你可以比使用普通的SQL更容易地使用关系。
例如,您可以有效地读取/写入嵌套的JSON结构,并使用单行轻松填充多个表,并从数据库中读取嵌套数据,而无需找出优化所需查询数量以获取相关数据的图算法从平面查询结果中构造嵌套数据。
最后,如果您没有使用任何ORM和一组自定义帮助程序,那么其他人就很难进入该代码库,因为它将充满自定义的纯SQL +多种帮助程序。
免责声明:我有偏见(并且知道我在说什么),因为我在过去几年里一直在维护knex查询构建器,而且我参与开发了唯一的轻量级Node.js ORM,我可以建议:objection.js
[1]斯泰森 - 哈里森1987年