m***@foxmail.com
m***@foxmail.com
  • 发布:2023-07-15 11:33
  • 更新:2023-07-17 11:29
  • 阅读:443

关于JQL中where查询的问题,头疼

分类:uniCloud

我写了一个云对象,代码如下:

复制代码const db = uniCloud.databaseForJQL();  
module.exports = {  
    async getNews(params) {  
        const collection = db.collection('news');  
        const {  
            category_id,   
            currentPage = 1,   
            pageSize = 3  
        } = params;  
        let start = (currentPage - 1) * pageSize;  
        let res = await collection.where("category_id == '" + category_id + "'")  
        .field("cover,title,excerpt,publish_date,category_id")  
        .orderBy('publish_date', 'desc')  
        .skip(parseInt(start))  
        .limit(parseInt(pageSize))  
        .get();  
        return res.data;  
    }  
}

然后将此云对象部署后URL化处理,然后使用runapi软件进行接口的测试,一切正常,如下图所示:

但我在uniapp中,使用http请求,访问此云对象,返回的结果为空,如下图所示:


下图所传参数,可以看到,参数和runapi中是一样的:

然后我在where条件中,换了一种写法:

复制代码let res = await collection.where({  
            category_id: category_id  
        }).field("cover,title,excerpt,publish_date,category_id")  
        .orderBy('publish_date', 'desc')  
        .skip(parseInt(start))  
        .limit(parseInt(pageSize))  
        .get();

这样做了以后,在runapi中,还是可以正常获取数据。但在前端程序中,使用http请求后,where条件就失效了。他会把数据表里的所有记录读出来,就相当于没有加where条件。我的数据表里一共只有2条记录,从下图可以看到,全部读出来了。

我在前端程序中,如果不用http的方式调用接口,而是直接使用云函数,当然也是能正常获取数据的。只是如果使用uniCloud.databaseForJQL,where中的条件,既可以写成字符串拼接,也可以写成对象。而如果是使用uniCloud.database,则where中只能使用对象的形式。

请问,这到底 要怎么搞啊?头疼。太复杂了。

2023-07-15 11:33 负责人:无 分享
已邀请:
m***@foxmail.com

m***@foxmail.com (作者)

找到问题了,原来是参数的原因。参数未传过去。我使用了x-www-form-urlencoded,这个在云端使用getParams是读取不到的。用form-data也不行。只有使用JSON才行,然后将云端改成getHttpInfo读取。

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

不同格式的payload在云端的解析是不一样的

要回复问题请先登录注册

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

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

## 大标题 
### 小标题

斜体 / 粗体 :

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

代码片段 :

``` 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

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

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