172617707
172617707
  • 发布:2024-08-15 10:10
  • 更新:2024-08-15 12:00
  • 阅读:422

database和databaseJQL 如何区分,什么情况下用哪个?感觉好混乱

分类:uniCloud

database和databaseJQL 如何区分,什么情况下用哪个?感觉好混乱

有时候用database可以,有时又不可以,要换成databaseJQL 才行。在一个云对象里,有时又要两个一起用,真的混乱呀。谁能帮忙解惑下

2024-08-15 10:10 负责人:无 分享
已邀请:

最佳回复

DCloud_uniCloud_VK

DCloud_uniCloud_VK

uniCloud.database 是传统mogondb语法,schema 无效,因为mogondb压根没有schema,也没有JQL,JQL是官方在mogondb语法上进行的封装,schema 就是专门给JQL使用的。

至于前端操作数据库时,现在应该写成 uniCloud.databaseForJQL,不应该写成 uniCloud.database,因为前端只能执行JQL语句,不能执行传统mogondb语句(前端操作数据库不安全,必须用schema来限制权限)

那么为什么前端还有一个 uniCloud.database 写法,且也是受到schema限制的呢?

这是历史原因,一开始设计JQL的时候,只考虑给前端使用,当时前端是没有 uniCloud.database API的,因此用了 uniCloud.database 来做前端JQL的声明,但是问题来了,开发者会困扰,同样是 uniCloud.database,为什么云函数里不受schema限制,因此前端又多了一个新的API uniCloud.databaseForJQL

所以前端 uniCloud.database 的效果 = uniCloud.databaseForJQL,而云函数中 uniCloud.database 就是传统的mogondb语法,schema 无效

  • 172617707 (作者)

    谢谢你的回复,前端使用jql,但是inc这种要放到云对象中,对吧?后端中应该是使用uniCloud.database,但是如果要使用groupBy这种,就需要使用jql,然后在_before方法内进行设置 if (dbJql == null) {

    dbJql = uniCloud.databaseForJQL({

    clientInfo: this.getClientInfo()

    })

    } 这样理解是否正确?

    2024-08-15 22:29

  • DCloud_uniCloud_VK

    回复 172617707: jql能做到的, 传统mogondb语法(uniCloud.database方式一定也可以做到)

    反之 传统mogondb语法能做到的, jql不一定可以做到

    2024-08-16 11:22

  • 172617707 (作者)

    回复 DCloud_uniCloud_VK: 请问下,目前有uni-id有集成企业微信相关的吗?

    2024-08-19 16:44

  • DCloud_uniCloud_VK

    回复 172617707: 目前没有

    2024-08-19 16:47

要回复问题请先登录注册