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:如何将子文档中的数组提取到父文档中的单个数组中

Mongoose更新嵌套数组

React Hook:将数据从子组件发送到父组件

Mongoose Populate Child ref 返回空数组

如何在树结构中从子级移动到父级?

React Hooks - 如何将道具从子组件传递到父组件?