After updating to Mongoose 5.11.13 I am getting the following error when trying to add an item to a sub-object inside a document.
CastError: Cast to embedded failed for value "{ value: 'new item' }" at path "items"
at model.Query.exec (D:\repos\pushbox\node_modules\mongoose\lib\query.js:4358:21)
at model.Query.Query.then (D:\repos\pushbox\node_modules\mongoose\lib\query.js:4452:15)
at processTicksAndRejections (internal/process/task_queues.js:97:5) {
messageFormat: undefined,
stringValue: `"{ value: 'new item' }"`,
kind: 'embedded',
value: "{ value: 'new item' }",
path: 'items',
reason: TypeError: this.ownerDocument(...).isSelected is not a function
My main Schma is called Card
. It holds a sub-object/sub-document called Property
and it looks like this:
export const CardSchema = new mongoose.Schema({
title: {
type: String,
required: true,
},
description: {
type: String,
default: '',
},
// Checklists in a Card
checklists: [{
title: {
type: String,
required: true,
},
items: [{
name: String,
select: Boolean,
}],
}],
// Properties in a card
properties: [{
name: {
type: String,
required: true,
},
items: [{
value: { type: String, default: '' },
isSelected: { type: Boolean, default: false },
}],
}],
box: {
type: ObjectId,
ref: 'Box',
},
}, {
timestamps: { createdAt: true, updatedAt: true },
});
The query being used to insert a new item
inside a property
is:
const newPropItem = await Card.findOneAndUpdate(
{
_id: cardId,
'properties._id': propertyId,
},
{
$push: {
'properties.$.items': { value: newItem.trim() },
},
},
{
new: true,
},
);
I have no idea why this is happening as we have a similar query for Checklist
and it works. I tried this query inside the mongo shell and it worked there. Could you guys help me figure out what exactly am I missing?
Oh and I tried looking into the whole TypeError: this.ownerDocument(...).isSelected is not a function
part as well, didnt have any luck finding anything that could help me in my case
you can not using isSelected
in Schema as a field name because isSelected()
internally for checking which paths we need to validate in mongoose,so change filed
name to isSelect
or ...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With