mongo_cell_decison_not_found
扩展库依赖 3 张 opendb 表:opendb-tempdata,opendb-device,uni-id-device。公测版 uniCloud,执行扩展库会自动创建。如果你使用的是 uniCloud 正式版需要自己在 uniCloud 的 web控制台 创建这3张表

uni-id用户体系,个人资料头像无法上传问题
很有可能是需要将服务空间切换到付费版的服务空间,如果没有效果建议关掉Hbuild 重新打开运行看看
<unicloud-db> </unicloud-db>报错
<unicloud-db v-slot:default="{data, loading, error, options}" collection="pyq_article" :getone="true">
<view v-if="error">{{error.message}}</view>
<view v-else-if="loading">正在加载...</view>
<view v-else>
<view class="title">{{ data.id }}</view>
</view>
</unicloud-db>
//Cannot read property 'id' of undefined
但问题是我{{data}}可以拿到数据,但{{data.id}}却说undefined,应该是当时还没获取到数据,但是loading不是会判断好了再加载吗?有点疑惑 于是乎 我就直接{{data?.id}}来解决了
有同学可能不知道?. 与??的作用,下面给大家演示下:
let obj = {name:"小白",age:25}
console.log(obj.name) // 能够正常打印 小白
console.log(obj.address) // 打印 undefined
console.log(obj.address.one) // 报错了,address都undefined 更别说下面的one了
那么如何解决呢?
console.log(obj?.address?.address) //表示尝试向下获取,有就获取,没有就undefined
console.log(obj?.address?.address ?? "不存在") //打印‘不存在’,??号后面类似设置一个默认值
TOKEN_INVALID_ANONYMOUS_USER: 未能获取当前用户信息:当前用户为匿名身份
使用云函数请求云数据库的数据时,不受权限限制!但使用前端代码请求时,会受到权限限制,没有拿到token可以从两个方面排除:
首先可能是DB Schem数据结构的权限没有打开,如下图:


此次可能是用到了jql语句内云端环境变量:
$cloudEnv_uid | 用户uid,依赖uni-id |

[uni-id-users.password.read]权限校验未通过
password 对于密码前端是无法查询的,除非你把password设置成string类型,或者避开这个查询的字段
uni-id-user,这张表read的权限是否打开
uniIDHasRole 如何在vue3中组合式API中使用
可以使用uniCloud.getCurrentUserInfo实现
console.log(uniCloud.getCurrentUserInfo())

将富文本内容以文本形式 渲染到页面上editor组件中
Obj.editorCtx.setContents({
html: res.result.data[0].content
})

使用unicloud-db组件,多表联查时遇到的尴尬问题
我先用uid查找用户自己的数据,得到一个用户点赞所有文章的id,我们定为temp1,然后用这些文章id找到文章详情,我们定为temp2,temp2表中我用的逻辑删除,用state来代表删除状态,于是我在获取temp2中加入【where(`delState != true`)】条件;
然后得到的结果将已经是=》用户所有的点赞记录,跟点赞记录外键连接的文章表信息,然后循环时由于有的点赞下文章状态是删除状态,所有下面的文章信息为空数据,渲染出来就是一个空,如何去除这个空呢?我弄了一些时间,然后用了一个取巧的办法,请看下面:
v-for="(item, index) in data.filter(item => item.article_id.length != 0)" :key="index"
大家有其他方法,欢迎留言~~
Uncaught (in promise) Error: 未能获取当前用户信息:登录状态失效,token已过期
//解析客户端token获取用户信息。常用于在前端判断当前登录的用户状态和用户权限
console.log(uniCloud.getCurrentUserInfo())

import { store } from "@/uni_modules/uni-id-pages/common/store.js"
console.log(store)

//从本地缓存中同步获取指定 key 对应的内容
console.log(uni.getStorageSync("uni-id-pages-userInfo"))

详情页与主页组件,点赞相互告知,实现无感联动
在同级组件中,我用的vuex,store.js配置:
import {
createStore
} from "vuex";
const store = createStore({
state: {
cellback_detail_like: {
_state: false,
_id: ''
}
},
mutations: {
up_cellback_detail_like(state,data) {
state._state = data.isLike
state._id = data._id
},
reset_cellback_detail_like(state) {
state._state = false
}
},
getters: {
watch_cellback_detail_like(state) {
return state
}
}
});
export default store
详情点赞页配置:
import {useStore} from 'vuex'
const vuex_store = useStore()
// 文章点赞点击事件
const clickLike = () => {
let res = on_like(uToast)
if (res) {
vuex_store.commit('reset_cellback_detail_like')
vuex_store.commit('up_cellback_detail_like', data.collectiones)
}
}
主页点赞数与状态联动:
import {useStore} from 'vuex'
const store = useStore()
// 通过vuex监听同级组件 中数组的变化
watch(() => store.getters.watch_cellback_detail_like, (val, old) => {
dataList.value.forEach(item => {
if (val._id._value == item._id) {
val._state ? item.like_count++ : item.like_count--
item.isLike = val._state
}
})
}, {
deep: true
})