名图客
名图客
  • 发布:2021-03-19 22:01
  • 更新:2022-10-24 19:59
  • 阅读:2127

unicloud-db 组件的update方法没有自动差量更新

分类:uni-app

文档原话是:
使用unicloud-db组件的update方法,除了更新云数据库中的数据外,也会同时更新当前页面的unicloud-db组件中的data数据,自然也会自动差量更新页面渲染的内容。
按this.$refs.udb.update(id, value)方法更新数据库后,似乎没有更新本地的页面内容,需要success后,再次调用this.$refs.udb.loadData({clear:true})手动刷新才能更新本地,与文档描述不符,组件的源代码也没有看出更新了本地数据,是不是我对文档描述的理解有误?

2021-03-19 22:01 负责人:DCloud_uni-ad_HDX 分享
已邀请:
名图客

名图客 (作者)

比如这个改价方法,以前使用配合vuex使用云函数,只需要调用一次云函数方法,访问一次库就可以解决了,尝试使用clientdb及unicloud-db组件,因为没有字段更新命令,需要单独使用云函数先push一个修改记录record,其次再调用unicloud-db 的update方法更新价格,最后再刷新列表,访问了三次云函数(clientdb也是封装的云函数吧),进了三次库,感觉被clientdb和unicloud-db组件坑了一把啊,头大~~~如果再弃用clientdb,又得重新反复折腾一遍
···
changePrice() {
if (this.dirty)
this.addRecord({ //云函数调用push字段更新,增加订单的操作记录
by: this.order.stid,
name: '调整价格为:' + this.price + '.00元',
time: Date.now()
}).then(res => {
this.udb.update(this.order._id, { //更新订单价格
price: this.price,
utime: Date.now()
}, {
success: res => {
this.priceShow = false
this.dirty = false
this.udb.loadData({ clear: true }) // 刷新本地列表
}
})
})
},
···

  • 7***@qq.com

    同感 反正很难受啊 改完数据 必须再刷新

    2021-07-23 16:01

名图客

名图客 (作者)

unicloud-db最新dev版的源代码,update方法调用后是直接返回uniCloud.database().update的结果,没有对datalist数据做差量更新处理,意味着用户得再刷一次库。
···
update (id, value, {
action,
showToast = true,
toastTitle,
success,
fail,
complete,
needConfirm = true,
needLoading = true,
loadingTitle = ''
} = {}) {
if (needLoading) {
uni.showLoading({
title: loadingTitle
})
}
/ eslint-disable no-undef /
let db = uniCloud.database()
if (action) {
db = db.action(action)
}
return db.collection(this.collection).doc(id).update(value).then((res) => {
success && success(res)
if (showToast) {
uni.showToast({
title: toastTitle || t('uniCloud.component.update.success')
})
}
}).catch((err) => {
fail && fail(err)
if (needConfirm) {
uni.showModal({
content: err.message,
showCancel: false
})
}
}).finally(() => {
if (needLoading) {
uni.hideLoading()
}
complete && complete()
})
},
···

DCloud_uni-ad_HDX

DCloud_uni-ad_HDX

下版将支持组件内部更新

  • c***@qq.com

    修改好了吗?目前还是没有差量更新啊

    2021-09-21 15:56

  • g***@vip.qq.com

    2020年的差量更新,到今天也没修复

    2021-09-29 15:00

  • 冬天的太阳

    2022年了 还是不支持差量更新

    2022-01-23 16:16

  • 冬天的太阳

    回复 g***@vip.qq.com: 2022年了 还是一样没有修复

    2022-01-23 16:16

  • efficient_work

    现在支持了吗

    2022-02-11 09:22

  • 1***@qq.com

    快2024了,支持差量了吗

    2023-12-06 18:19

2***@qq.com

2***@qq.com

真难用 ,生命周期没有,技巧没有,案例没有

冬天的太阳

冬天的太阳 - 一个xx的90后

2022年了, 还是没有差量更新

DCloud_uni-ad_HDX

DCloud_uni-ad_HDX

当前版本可以手动调用 $refs.udb.dataList= [] 更新数据

DCloud_uni-ad_HDX

DCloud_uni-ad_HDX

差量更新功能暂不实现,可以自己控制刷新策略

要回复问题请先登录注册