我正在尝试删除一个嵌套对象,但它没有消失,而是被一个空对象替换。
这是我的文件结构:
[
{
"id": "0" ,
"name": "Employee 1" ,
"schedules": [
{"Weekdays": "yes"},
{"Weekends": "no"}
]
} ,
{
"id": "1" ,
"name": "Employee 2" ,
"schedules": [
{"Weekdays": "no"},
{"Weekends": "yes"}
]
}
]
假设我要删除“周末”。这是我的代码:
r.db('shank').table('teachers').replace(r.row.without({'schedules': 'Weekends'})).run(connection, function(err, result) {
if (err) throw err;
;
//confirmation stuff
});
});
现在如果我查看我的表格,那么文件就是这样的:
"schedules": [
{"Weekdays": "yes"},
{}
]
我还尝试将其更改为遵循here所述的语法,方法是:
r.row.without({'schedules': {'Weekends'}})
但我收到了意外令牌'}'的错误。知道怎么了吗?
答案 0 :(得分:1)
这应该有效:
r.db('test').table('test').get('0').update(function(doc) {
return doc.merge({
schedules: doc("schedules").filter(function(schedule) {
return schedule.hasFields('Weekends').not()
})
})
})
字段计划是一个数组,是预期的吗?有没有理由说它不仅仅是一个包含两个字段Weekends
和Weekdays
的对象?这会让事情变得更容易。
答案 1 :(得分:0)
你的最后一个接近于对我有用的东西,只需要在嵌套的JSON对象中添加true
:
r.row.without({'schedules': {'Weekends': true}})