云开发_.remove()无法正确删除数组内的对象
发布于 6 年前 作者 rengang 7705 次浏览 来自 官方Issues

假设在User集合中有如下一个记录:

{

 "arrayA": [

         { "name": "A",  subObjA:{ } },

         { "name": "B",  subObjB:{ } }

    ]

}

db.collection(‘User’).where({

        xx: xxx

        }).update({

                data:{

                //1.  删除arrayA内第一个元素内的subObjA对象。这个能成功删除(即:Object内的Object是可以成功删除的)。

                ‘arrayA’: { [0]: { subObjA: _.remove() }},    

                //2.  删除arrayA内第二个元素。这个无法完全删除,arrayA[1]会变为null(即:数组内的Object无法完全删除,Object变为null)。

                ‘arrayA’: { [1]: _.remove()  }

        }

});

综上所述:无法正确删除数组内的对象。

问题回顾:在以前是在云开发数据库面板手动删除数组内的对象,这个对象变为null,无法完全删除。现在是通过代码删除数组内的对象,这个对象变为null,无法完全删除。

1 回复

_.remove() 类似 MongoDB 的 unset(参考:https://image.wxopen.club/content_371262b8-4f56-11ea-992e-001a7dda7111.png):

  1. 如果作用的是对象,那么会直接删除

  2. 如果是数组,那么会置为 null,这样不会改变数组自身的长度和后面元素的索引

如果想要从数组中删除某个符合条件的元素,那么可以使用 pullAll,具体可以看文档:https://image.wxopen.club/content_371d1306-4f56-11ea-a01a-001a7dda7111.png

回到顶部