时间:2019-05-07 来源:小程序工厂
我现在也遇到这个问题,但是这样更新的数组,如果有很多人同时提交岂不是乱套了
就是咯 取出 数组 再操作数组 再更新数组
这样操作相当多了对数据库的执行步骤,不知道有没有一步操作完。
没有
你这样写只能更新对象,官方并没有给出可以更改具体数组元素的api
_gis:_.push(e._gid)可以对数组_gis添加元素,官方解释里面好像只有从头部和尾部添加去除元素,没有移除指定的元素呢,像下面这样
_gis:_.remove(e._gid)
对的 只能这样 我现在都是先把数组从数据库拿回来然后更新然后再通过api更新整个数组
我发现我不知道怎么去删除指定元素,需要for循环来删除吗?
不要想着直接从数据库操作
可以先wx.collection('').where({
}).get()拿回数组
var arr=''
然后在本地操作arr
这个相信不用我说了吧
操作完之后你的这个arr就是更新完成的了
然后再wx.collection('').where({
}).updata({
})记住这里直接将你刚才更新完的数组整个放进去,这样你的数组就更新完成了
因为官方对数组的操作比较局限化 所以不可能像你说的直接操作比如data:{
arr[0]:"xxxx"
}这样是行不通的
我知道你的意思,因为不懂也是在网上找了一些信息。网上有如
Array.prototype.remove = function (val)但论坛上也有说不能这样定义。所以我定义一个函数来得到新的数组,如下
async function ArrayRemove(array, value) {
对 就是这个意思
更新的是一个整个数组,不是单个数组元素
谢谢帮助
好面的代码有点错误,应该是return array.splice(k, 1);