Object type in mongoose
You have two options to get your Object
in the db:
1. Define it by yourself
let YourSchema = new Schema({ inventoryDetails: { config: { count: { static: { value: { type: Number, default: 0 }, dataSource: { type: String } } } }, myType: { type: String } }, title: { static: { value: { type: Number, default: 0 }, dataSource: { type: String } } }})
Take a look at my real code:
let UserSchema = new Schema({ //... statuses: { online: { type: Boolean, default: true }, verified: { type: Boolean, default: false }, banned: { type: Boolean, default: false } }, //...})
This option gives you the ability to define the object's data structure.
If you want a flexible object data structure, see the next one.
2. Use the default Schema.Types.Mixed
type
Example taken from the doc:
let YourSchema = new Schema({ inventoryDetails: Schema.Types.Mixed})let yourSchema = new YourSchema;yourSchema.inventoryDetails = { any: { thing: 'you want' } }yourSchema.save()
Mongoose 5
An "anything goes" SchemaType. Mongoose will not do any casting on mixed paths. You can define a mixed path using Schema.Types.Mixed or by passing an empty object literal. The following are equivalent.
const Any = new Schema({ any: {} });const Any = new Schema({ any: Object });const Any = new Schema({ any: Schema.Types.Mixed });const Any = new Schema({ any: mongoose.Mixed });
For your current schema you can use the next example:
import mongoose from 'mongoose'const inventorySchema = mongoose.Schema({ inventoryDetails: { type: mongoose.SchemaTypes.Mixed, required: true }, isActive:{ type: Boolean, default:false }})const inventory = await inventorySchema.create({ inventoryDetails: { config: { count: { static: { value: '123' }, dataSource: 'STATIC' }, title: { static: { value: 'tik' }, dataSource: 'STATIC' } }, type: 's-card-with-title-count' }})console.log(inventory)