Given the following scenario Schema, Dasbhoards are being actually added to set correctly for upsert. Im trying to $pullAll with no sucess at all.
/**
* Dashboard Schema
*/
const DashboardSchema = new mongoose.Schema({
_user: { type: Schema.Types.ObjectId,
ref: 'User',
required: true,
unique: false,
},
_cards: [{
_id: false,
cardId: { type: Schema.Types.ObjectId },
cardType: {
type: String,
enum: ['BATTLE', 'QUEST', 'MISSION'],
},
}],
});
And Statics
/**
* DASHBOARD_STATICS
**/
pullAndUpdate(dashboardId, cards) {
return this.findOneAndUpdate(
{
_id: dashboardId,
},
{
$pullAll: { _cards: [cards] },
},
{
upsert: false,
setDefaultsOnInsert: false,
new: true,
},
)
.exec()
.then((Dashboard) => {
if (Dashboard) {
return Dashboard;
}
const err = new Error('Error Upserting Dashboard',
httpStatus.NOT_FOUND);
return Promise.reject(err);
});
},
};
` Where cards param in pullAndUpdate func is getting an array of objects like
{
"cardId":ObjectID("41224d776a326fb40f000009")
}
This is how mongo record looks like
{
"_id" : ObjectId("5ae3a4d6186af4a878dda65d"),
"_user" : ObjectId("41224d776a326fb40f000001"),
"__v" : 0,
"_cards" : [
[
{
"cardType" : "MISSION",
"cardId" : ObjectId("41224d776a326fb40f000007")
}
],
[
{
"cardType" : "MISSION",
"cardId" : ObjectId("41224d776a326fb40f000009")
}
]
]
}
Any thoughts ?