我无法删除Meteor集合中数组内的字段。这是我收藏的结构:
我已经尝试过了:
_source
但未成功。
我想删除“所有者”数组下的任何键,并且我仅引用其值,而不引用其索引。在这种情况下,我将SMUProfiles.update({
owner: this.userId,
'classrooms.owner': classroom_id,
}, {
$pull: {
'classroom.$.owner': classroom_id
}
}
)
称为6Yi64LqpqnfsHv4ms
。
答案 0 :(得分:1)
您尝试过
SMUProfiles.update({
owner: this.userId,
}, {
$pull: {
'classrooms.owner': classroom_id
}
}
)
我认为带有对象路径的简单pull运算符应该足以从数组中提取元素。
答案 1 :(得分:0)
显然,目前没有简便的方法可以做到这一点。因此,对于可能正在研究类似问题的其他人来说,这是我的解决方案:
//** Method for deleting Classroom */
'classroom.delete'(classroom_id){
if(!this.userId){
throw new Meteor.Error('not-authorised');
}
Classrooms.remove(classroom_id)
let classids = Classrooms.find({ owner: this.userId
}).fetch().map(function(classrooms){
return classrooms._id })
//console.log(classids);
SMUProfiles.update({
owner: this.userId,
}, {
$set: {
'classrooms.owner': classids
}
}
)
},
此解决方案背后的故事:
我有2个收藏集Classrooms
和SMUProfiles
。注册后,将在SMUProfile下为该用户创建一条新记录,其中包含其他一些详细信息(请参阅上面问题中的图片),包括该用户创建的教室ID的记录。
现在,当用户删除Classrooms
集合中的教室时,我还需要删除SMUProfile
中已删除的教室的ID。我最初试图从SMUProfile
中的ID数组中删除ID,但未成功。
我通过以下方法解决了此问题:删除教室后,重新读取Classrooms
集合,在数组中重复重申其余教室的ID,然后$set
将新的教室ID数组SMUProfile
。