4***@qq.com
4***@qq.com
  • 发布:2022-10-14 20:38
  • 更新:2022-10-21 17:37
  • 阅读:329

使用unicoloud遇到的一大巨坑,后来者千万要小心!!!

分类:uniCloud

当你的where里有一项的值为undefined的时候,比如你前端表单里忘了写这一项
比如:
.where({
_id:uid
status:'正常'
})
如果这个时候uid传过来的是undefined,数据库忽略掉_id这一项,会把所有的status='正常'的数据全都给你
仅查询的话问题不大,但当你update的时候......
比如:
.where({
_id:uid
status:'正常'
})
.update({
vip:true
})
那么恭喜你。。。整个库里的人全变成了VIP。。。。。

0 关注 分享

要回复文章请先登录注册

4***@qq.com

4***@qq.com (作者)

回复 DCloud_uniCloud_WYQ :
是,只不过作为基础服务的话,这样的设置确实感觉有点问题
2022-10-21 17:37
追梦随想

追梦随想

理论上undefined不能查询到数据才对,如果能查到,那就是unicloud框架的小bug,不过既然涉及到操作数据库,严格验证每一项数据还是很有必要的,做后端必备技能
2022-10-18 13:30
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

数据校验还是必要的,不管是不是uniCloud,uni-id-co里面实现的校验器还挺好用,可以参考下 [校验器本体](https://gitcode.net/dcloud/hello_uni-id-pages/-/blob/master/uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/common/validator.js), [使用示例](https://gitcode.net/dcloud/hello_uni-id-pages/-/blob/master/uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/common/validator.test.js)
2022-10-18 12:11
雷峰

雷峰

回复 4***@qq.com :
我试了一下 云函数端并不会发生向你说的这种,只有前端的JQL会这样
2022-10-18 10:18
4***@qq.com

4***@qq.com (作者)

回复 雷峰 :
你这歪楼了,_id只是举例子,事实上.where({
out_trade_no:outTradeNo
status:'正常'
})也是一样的
2022-10-17 15:31
雷峰

雷峰

你这是doc操作为什么用where,这也是习惯问题。
2022-10-17 10:27
4***@qq.com

4***@qq.com (作者)

回复 魑魅魍魉cmwl :
的确,这可能是微信的锅,uni给背了
2022-10-16 23:45
hws007

hws007

还有这样的事!还好在入库前,都有判断数据!哪个键必填!键值的类型!键值的要求!都得有个验证,才入库
2022-10-15 19:48
魑魅魍魉cmwl

魑魅魍魉cmwl

微信云开发也一样的
2022-10-15 19:39
linnian

linnian

太恐怖了,又懒得做非空验证,只能靠凑活着用维持生活这样子
2022-10-14 20:44