同上
2***@qq.com
- 发布:2023-05-22 13:32
- 更新:2023-05-22 17:13
- 阅读:389
产品分类: uniCloud/App
示例代码:
操作步骤:
在jql调试控制台测试如下:
创建测试数据库
{
"bsonType": "object",
"required": [],
"permission": {
"read": true,
"create": true,
"update": true,
"delete": true
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"a": {
"bsonType": "int",
"description": "a",
"defaultValue": 0
},
"b": {
"bsonType": "object",
"description": "b"
}
}
}
添加原始数据
db.collection("aaa").add({
a: 1,
b: {
"x": {
"m": 1
}
}
});
测试更新
db.collection("aaa").where({
a: 1
}).update({
a: 2,
b: {
"x": {}
}
});
结果:字段b
更新不生效
在jql调试控制台测试如下:
创建测试数据库
{
"bsonType": "object",
"required": [],
"permission": {
"read": true,
"create": true,
"update": true,
"delete": true
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"a": {
"bsonType": "int",
"description": "a",
"defaultValue": 0
},
"b": {
"bsonType": "object",
"description": "b"
}
}
}
添加原始数据
db.collection("aaa").add({
a: 1,
b: {
"x": {
"m": 1
}
}
});
测试更新
db.collection("aaa").where({
a: 1
}).update({
a: 2,
b: {
"x": {}
}
});
结果:字段b
更新不生效
预期结果:
更新后数据库应为如下:
{
a: 2,
b: {
"x": {}
}
}
更新后数据库应为如下:
{
a: 2,
b: {
"x": {}
}
}
实际结果:
子字段更新不生效,如下:
{
a: 2,
b: {
"x": {
"m": 1
}
}
}
子字段更新不生效,如下:
{
a: 2,
b: {
"x": {
"m": 1
}
}
}
bug描述:
uniCloud更新时不能删掉对象字段的子字段。
如:原数据结构如下
{"a":1,"b":{"x":{"m":1}}}
新提交数据如下:
{"a":2,"b":{"x":{}}}
其中b字段 是 object
类型
结果:更新提交后不生效
b
对象字段的子字段x
中还是存在 "m":1
注意:网页版uniCloud后台管理界面可以生效、但使用在云函数或jql调试控制台 用 update
或updateAndReturn
都不生效
2 个回复
DCloud_uniCloud_VK
这不是bug, 如果你需要将
修改成
你的数据库修改语句需要这样写
即需要用 _.set() 命令
DCloud_uniCloud_VK
set的作用是将x对象字段全量覆盖
而不用set时的表现是: 部分修改的意思(即你传了哪个子字段,就修改那个子字段,你传{}等于传了空对象,代码没有字段,故表现就是不修改)
2***@qq.com (作者)
哦好的,谢谢。
2023-05-22 20:04