我在删除猫鼬对象时遇到问题。 我有模式
shareholder.model.js
const Shareholder = mongoose.Schema({
name: String,
shares: [
{
type: mongoose.Schema.Types.Mixed, ref: 'shares'
}
],
})
mongoose.model('Shareholder', Shareholder)
所以我正在尝试从“共享”字段中删除对象
shareholder.service.js
// {shareholderId} id of object
// {shareId} unique id which have every object of the array
async function removeShareFromShareholder(shareholderId, shareId) {
try {
await Shareholder.findByIdAndUpdate(shareholderId,
{ $pull : { 'shares' : { '_id' : shareId } }},
{ safe: true })
}
} catch (error) {
throw new Error(`removeShareFromShareholder service error: ${error}`)
}
}
但是上面的代码不起作用
能给我个建议吗
答案 0 :(得分:1)
由于要保存ObjectId
引用,因此应将shares
的类型更改为Schema.Types.ObjectId
然后,因为该数组仅包含ids
,而不包含具有_id
属性更改的文档
{ $pull : { 'shares' : { '_id' : shareId } }}
到
{ $pull : { shares : shareId }}