Mongoose如何将数组从子更新到父
Posted
技术标签:
【中文标题】Mongoose如何将数组从子更新到父【英文标题】:Mongoose how to update array from child to parent 【发布时间】:2020-12-04 08:47:42 【问题描述】:我有以下音频架构。
const Audioschema = new mongoose.Schema(
name:
type: String,
required: true
,
uploaderId:
type: String,
required: true
);
我没有引用用户,而是将用户的 _id
存储为 uploaderId。
在我的用户架构中,我还为用户上传的所有音频文件提供了 audioFiles: [Audio]
数组。
const UserSchema = new mongoose.Schema(
...,
audioFiles: [Audio]
);
当我尝试从我的 REST Api 更新我的 AudioSchema 时,我可以更改所有属性并且可以正常工作,但在保存此音频模型后,这些更改不会影响用户模型。
现在我创建了一个新分支并尝试将uploaderId
更改为UserSchema
。但我想知道是否有解决方案而不参考UserSchema
【问题讨论】:
【参考方案1】:在MongooseArray.prototype.pull
方法的帮助下,我设法做到了。
解决这个问题的步骤非常简单。
首先我获得了与 AudioModel.uploaderId 关联的用户,然后我使用了user.audioFiles.pull()
方法。正确的代码如下。
let user = await UserService.getUser(userId);
await user.audioFiles.pull(
_id: audioId //audioId is the id which i'm trying to remove from array
);
await user.save();
我还添加了 try-catch 块来处理错误。
任何遇到此类问题的人都可以使用下面的链接获取有关MongooseArray.prototype.pull
方法的更多信息。
您也可以在this 帖子中查看其他答案。
【讨论】:
以上是关于Mongoose如何将数组从子更新到父的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose:如何将子文档中的数组提取到父文档中的单个数组中