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

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

要回复问题请先登录注册

  • 标题 / 粗斜体
  • 代码片段
  • 超链接 / 图片 / 视频
  • 列表 / 引用

文章内容较多时,可以用标题分段 :

## 大标题 
### 小标题

斜体 / 粗体 :

**粗体** 
*斜体*
***粗斜体***

代码片段 :

``` javascript
代码片段
```

超链接 :

[链接文字](链接地址) 例: [百度](http://www.baidu.com)

图片 :

![图片说明](图片地址) 例: ![百度logo](http://www.baidu.com/img/bdlogo.gif)

视频 :

!![视频说明](视频地址) 例: !![优酷视频](http://youku.com)

有序列表 :

1. 123
2. 123
3. 123

无序列表 :

- 123
- 123
- 123

引用 : ( 双回车后结束引用 )

> 引用内容
引用内容
引用内容