systhinker
systhinker
  • 发布:2024-04-12 18:55
  • 更新:2024-04-12 21:16
  • 阅读:187

【报Bug】unicloud客户端查询语句执行出错

分类:uniCloud

产品分类: uniCloud/App

示例代码:
<template> <view class="container"> <unicloud-db ref="udb" v-slot:default="{data, pagination, loading, hasMore, error}" where="sWhere" loadtime="manual"

collection="collectionList" field="actionname,icon,iconcolor,description,limited_time,limited_time_ring,need_vibison,timeup_continue,in_interval_time,in_interval_ring,need_in_vibison,out_interval_time,out_interval_ring,need_out_vibison,create_date,user_id{_id,nickname}"> <view v-if="error">{{error.message}}</view>
<view v-else-if="data">
<uni-list>
<uni-list-item v-for="(item, index) in data" :key="index" showArrow :clickable="true" @click="handleItemClick(item._id)">
<!-- 通过header插槽定义列表左侧图片 -->
<template v-slot:header>
<uv-icon :name="item.icon" :color="item.iconcolor" size="28"></uv-icon>
</template>
<!-- 通过body插槽定义布局 -->
<template v-slot:body>
<view class="main">
<text class="title">{{item.actionname}}</text>
<view class="info">
<text class="author">{{item.user_id[0]?item.user_id[0].nickname:''}}</text>
<uni-dateformat class="last_modify_date" :date="item.create_date"
format="yyyy-MM-dd" :threshold="[60000, 2592000000]" />
</view>
</view>
</template>

  </uni-list-item>  
</uni-list>  

</view>
<uni-load-more :status="loading?'loading':(hasMore ? 'more' : 'noMore')"></uni-load-more>
</unicloud-db>
<uni-fab ref="fab" horizontal="right" vertical="bottom" :pop-menu="false" @fabClick="fabClick" />
</view>
</template>

<script>
const db = uniCloud.database()
export default {
data() {
return {
collectionList: "kungfu-actions-diy,uni-id-users",
loadMore: {
contentdown: '',
contentrefresh: '',
contentnomore: ''
},
// sWhere:'',

    // sWhere:"user_id=='65f98a10a7c432936b30e275'",  
    //sWhere:"hall_numb==2 || user_id=='65f98a10a7c432936b30e275'",  
    sWhere:"'hall_numb'==1 ||'icon'=='moments' || 'user_id'=='65f98a10a7c432936b30e275'",  

           //"'hall_numb'==0||'user_id'=='65f98a10a7c432936b30e275'"  
           //"'hall_numb'==0||'user_id'=='65f98a10a7c432936b30e275'"  
  }  
},  
onPullDownRefresh() {  
  this.$refs.udb.loadData({  
    clear: true  
  }, () => {  
    uni.stopPullDownRefresh()  
  })  
},  

onReachBottom() {  
  this.$refs.udb.loadMore()  
},  
onLoad() {  

    //this.sWhere = '"user_id"=="'+uniCloud.getCurrentUserInfo().uid+'"';  
    //this.sWhere = "'user_id'=='"+uniCloud.getCurrentUserInfo().uid+"'";  
    console.log("onLoad",this.sWhere);  
    this.$nextTick(() => {  
                  this.$refs.udb.loadData()  
                  console.log("loadData",this.$refs.udb.$data)  
                })  
},    
methods: {  
  handleItemClick(id) {  
    uni.navigateTo({  
      url: './detail?id=' + id  
    })  
  },  
  fabClick() {  
    // 打开新增页面  
    uni.navigateTo({  
      url: './addAction',  
      events: {  
        // 监听新增数据成功后, 刷新当前页面数据  
        refreshData: () => {  
          this.$refs.udb.loadData({  
            clear: true  
          })  
        }  
      }  
    })  
  }  
}  

}
</script>

<style>
.main {
justify-content: space-between;
flex: 1;
}

.title {  
    font-weight: bold;  
    font-size: 32rpx !important;  
    text-align: left;  
}  

.info {  
    flex-direction: row;  
    justify-content: space-between;  
}  

.author,  
.last_modify_date {  
    font-size: 14px;  
    color: #999999;  
}  

</style>

操作步骤:

数据库如下:


_id  

"6617eefea09a9b12d7860da8"  

user_id  

"65f98a10a7c432936b30e275"  

icon  

"arrow-up-fill"  

iconcolor  

"#ff0000"  

hall_numb  

0  

limited_time  

10  

need_vibison  

false  

timeup_continue  

false  

in_interval_time  

0  

need_in_vibison  

false  

out_interval_time  

0  

need_out_vibison  

false  

actionname  

"我的那个去"  

description  

"啊发生的af\n阿法撒旦萨芬\n是否达到更高\nsgfsg\ngfsdfgdfgdsg岁的法国"  

limited_time_ring  

""  

in_interval_ring  

""  

out_interval_ring  

""  

create_date  

1712844542875  
============================================================  
_id  

"6617fd297ad52dfcccfc68a8"  

user_id  

"65f98a10a7c432936b30e275"  

icon  

"arrow-down-fill"  

iconcolor  

"#00ffff"  

hall_numb  

2  

limited_time  

10  

need_vibison  

false  

timeup_continue  

false  

in_interval_time  

0  

need_in_vibison  

false  

out_interval_time  

0  

need_out_vibison  

false  

actionname  

"测试"  

description  

以仰卧式为主  

limited_time_ring  

""  

in_interval_ring  

""  

out_interval_ring  

""  

create_date  

1712848169003  
===========================================================  
_id  

"66180c878b0da4a4e4c98452"  

user_id  

"65f98a10a7c432936b30e275"  

icon  

"level"  

iconcolor  

"#ff0000"  

hall_numb  

0  

limited_time  

10  

need_vibison  

false  

timeup_continue  

false  

in_interval_time  

0  

need_in_vibison  

false  

out_interval_time  

0  

need_out_vibison  

false  

actionname  

"测试"  

description  

"whats up"  

create_date  

1712852103133  
===========================================================  
_id  

"66181031a09a9b12d78ce4db"  

user_id  

"65f98a10a7c432936b30e275"  

icon  

"gift-fill"  

iconcolor  

"#ff0000"  

hall_numb  

0  

limited_time  

10  

need_vibison  

false  

timeup_continue  

false  

in_interval_time  

0  

need_in_vibison  

false  

out_interval_time  

0  

need_out_vibison  

false  

actionname  

"33"  

description  

"33"  

limited_time_ring  

""  

in_interval_ring  

""  

out_interval_ring  

""  

create_date  

1712853041694  
===========================================================  
_id  

"6618115ae0ec199b188baf49"  

user_id  

"65f98a10a7c432936b30e275"  

icon  

"gift-fill"  

iconcolor  

"#ff0000"  

hall_numb  

0  

limited_time  

30  

need_vibison  

true  

timeup_continue  

true  

in_interval_time  

10  

need_in_vibison  

true  

out_interval_time  

1  

need_out_vibison  

true  

actionname  

"4"  

description  

"1"  

limited_time_ring  

""  

in_interval_ring  

""  

out_interval_ring  

""  

create_date  

1712853338062  
===========================================================  
_id  

"66181dbb7ad52dfccc0260b4"  

user_id  

"65f98a10a7c432936b30e275"  

icon  

"map-fill"  

iconcolor  

"#aa55ff"  

hall_numb  

0  

limited_time  

25  

need_vibison  

true  

timeup_continue  

true  

in_interval_time  

7  

need_in_vibison  

false  

out_interval_time  

10  

need_out_vibison  

false  

actionname  

"气贯长虹"  

description  

"测试"  

limited_time_ring  

""  

in_interval_ring  

""  

out_interval_ring  

""  

create_date  

1712856507773

预期结果:

数据库

{
"bsonType": "object",
"permission": {
"read": true,
"create": "auth.uid != null",
"update": "doc.user_id == auth.uid",
"delete": "doc.user_id == auth.uid"
},
"required": [
"actionname",
"icon",
"iconcolor",
"description",
"hall_numb",
"limited_time",
"timeup_continue",
"in_interval_time",
"out_interval_time"
],
"properties": {
"_id": {
"description": "动作 ID,系统自动生成"
},
"user_id": {
"bsonType": "string",
"description": "动作设置作者ID, 参考uni-id-users 表",
"foreignKey": "uni-id-users._id",
"defaultValue": {
"$env": "uid"
}
},
"actionname": {
"bsonType": "string",
"title": "名称",
"description": "练习的名称,最小颗粒度",
"order": 1,
"trim": "both"
},
"icon": {
"bsonType": "string",
"description": "图标地址或代码",
"title": "图标",
"order": 2,
"defaultValue":"gift-fill",
"trim": "both"
},
"iconcolor": {
"bsonType": "string",
"description": "图标颜色",
"title": "图标颜色",
"trim": "both",
"defaultValue":"#ff0000",
"order": 3
},
"description": {
"bsonType": "string",
"title": "描述",
"description": "描述",
"label": "描述",
"trim": "right",
"order": 4
},
"hall_numb": {
"bsonType": "int",
"title": "大厅序号",
"description": "大厅序号:0 太和宫 1 真武殿 2 玄武殿",
"defaultValue": 0,
"enum": [{
"value": 0,
"text": "太和宫"
}, {
"value": 1,
"text": "真武殿"
}, {
"value": 2,
"text": "玄武殿"
}]
},
"limited_time": {
"bsonType": "int",
"title": "定时",
"order": 5,
"defaultValue":10,
"description": "0:不限,大于等于1为限制的时长(分钟)"
},
"limited_time_ring": {
"bsonType": "string",
"description": "定时铃声地址",
"title": "定时铃声",
"order": 6,
"trim": "both"
},
"need_vibison": {
"bsonType": "bool",
"title": "是否振动",
"order": 7,
"defaultValue":false,
"description": "是否振动"
},
"timeup_continue": {
"bsonType": "bool",
"title": "是否允许延长",
"order": 8,
"defaultValue":false,
"description": "到期后是否允许延长"
},
"in_interval_time": {
"bsonType": "int",
"title": "时限内间隔报时",
"order": 9,
"defaultValue":0,
"description": "0:不间隔报时,大于等于1为间隔的时长(分钟)"
},
"in_interval_ring": {
"bsonType": "string",
"description": "间隔报时铃声地址",
"title": "间隔报时铃声",
"order": 10,
"trim": "both"
},
"need_in_vibison": {
"bsonType": "bool",
"title": "间隔是否振动",
"order": 11,
"defaultValue":false,
"description": "间隔是否振动"
},
"out_interval_time": {
"bsonType": "int",
"title": "时限外间隔报时",
"order": 12,
"defaultValue":0,
"description": "0:不间隔报时,大于等于1为间隔的时长(分钟)"
},
"out_interval_ring": {
"bsonType": "string",
"description": "间隔报时铃声地址",
"title": "间隔报时铃声",
"order": 13,
"trim": "both"
},
"need_out_vibison": {
"bsonType": "bool",
"title": "间隔是否振动",
"order": 14,
"defaultValue":false,
"description": "间隔是否振动"
},
"create_date": {
"bsonType": "timestamp",
"description": "创建时间",
"forceDefaultValue": {
"$env": "now"
}
}
},
"version": "0.0.1"
}

实际结果:

使用unicloud-db客户端组件,where语句查询自定义数据库时,只要涉及到user_id字段就会出错,||隔开user_id条件和其他条件,实际查询效果是&&的效果,单独把user_id字段拿出来查询,查不到数据,这个问题排查了一天,快疯了的感觉。

bug描述:

使用unicloud-db客户端组件,where语句查询自定义数据库时,只要涉及到user_id字段就会出错,||隔开user_id条件和其他条件,实际查询效果是&&的效果,单独把user_id字段拿出来查询,查不到数据,这个问题排查了一天,快疯了的感觉。

2024-04-12 18:55 负责人:无 分享
已邀请:
systhinker

systhinker (作者)

我自己找到原因了,联表查询的外联字段不能放在where语句中

要回复问题请先登录注册