Tengo el siguiente esquema como ejemplo:
const categorySchema = new mongoose.Schema({ categoryId: {type: Number}, title: {type: String, default: "standard"}, })Quiero que la categoría con categoryId igual a 1, siempre debe ser "estándar", y si no se especifica el título, asignará categoryId = 1. ¿Hay alguna forma de hacerlo en Mongoose?
Ok, entonces tenemos dos casos aquí:
categoría con categoryId igual a 1, siempre debe ser "estándar"
Podrías usar un gancho previo, el código sería así:
const categorySchema = new mongoose.Schema({ categoryId: {type: Number}, title: {type: String, default: "standard"}, }) categorySchema.pre('save', function (){ if(this.categoryId === 1){ this.title = "standard"; } }) const categoryModel = mongoose.model('Category', categorySchema); const category = new categoryModel({title: 'Greaat', categoryId: 1}); await category.save();si no se especifica el título, asignará el categoryId = 1
Con su código actual, no debería funcionar porque está indicando con default: "standard" que si no se especifica un título, debe asignar estándar como predeterminado, por lo que debe dejar la propiedad predeterminada y administrarla en el enlace previo para lograr eso, pero esa lógica me parece complicada, tal vez necesites pensar un poco mejor cuál es el problema, porque este tipo de soluciones son demasiado complicadas en mi humilde opinión.