微信小程序 云开发update不能更新数据库?云开发追加数组元素?如何判断使用add还是update? 解决!
Posted ihoudf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序 云开发update不能更新数据库?云开发追加数组元素?如何判断使用add还是update? 解决!相关的知识,希望对你有一定的参考价值。
主业ios,写过一年java and kotlin,最近自己写个小程序玩玩。不得不说云开发的确方便。但是update不能更新?
查了很多资料,有些说使用云函数,有的说数据库权限,都没有说到点上。
最后自己试出来了,亲测可行,不当之处请指教。
标题的几个问题都是连带出来的。
首先说第三个:
当没有数据时用add,有了之后用update,怎么判断有没有呢?目前我的做法是先get请求一下,如下:
const DB = wx.cloud.database()
const T = DB.collection('user_timer')
T.where( _openid: openid ).get(
success: function (res)
console.log('【查询】' + res.data.length)
if (res.data.length > 0)
console.log('追加')
update()
else
console.log('新增')
add()
)
如有更好方法请留言赐教。
第二个问题:
直接上代码了:方法很清楚,一看就懂,主要是一个push语法。
T.doc(openid).update(
data:
data: DB.command.push(
// 这里是你的数据
title: title,
targetTime: targetTime,
createTime: currrentDate
)
,
success: res =>
wx.showToast( title: '追加记录成功',)
console.log('[数据库] [追加记录] 成功,记录 _id: ', res)
return res
,
fail: err =>
wx.showToast( icon: 'none', title: '追加记录失败')
console.error('[数据库] [追加记录] 失败:', err)
return null
)
第一个问题:(这里有问题,后面更新)
这个问题试了很久。简而言之,你新建第一条的时候不要用add,要用set,两者具体内涵可查文档。
所以第一个问题的代码修改为:
console.log('openid为' + openid)
T.where( _openid: openid ).get(
success: function (res)
console.log('【查询】' + res.data.length)
if (res.data.length > 0)
console.log('追加')
update(title, targetTime)
else
console.log('新增')
set(title, targetTime)
)
新增:
T.doc(openid).set(
data:
data: [
title: title,
targetTime: targetTime,
createTime: currrentDate
],
,
success: res =>
wx.showToast( title: '新增记录成功',)
console.log('[数据库] [新增记录] 成功,记录 _id: ', res)
return res
,
fail: err =>
wx.showToast( icon: 'none', title: '新增记录失败' )
console.error('[数据库] [新增记录] 失败:', err)
return null
)
end
以上是关于微信小程序 云开发update不能更新数据库?云开发追加数组元素?如何判断使用add还是update? 解决!的主要内容,如果未能解决你的问题,请参考以下文章
微信小程序云开发报错解决: Setting data field "openid" to undefined is invalid.