我有以下音频模式。
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
的解决方案
我在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
方法的更多信息。
你也可以在这篇文章中查看其他答案。