提问者:小点点

猫鼬如何将数组从子数组更新为父数组


我有以下音频模式。

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方法的更多信息。

你也可以在这篇文章中查看其他答案。