mongodb - Cómo escribir un arreglo de ObjectID de Mongoose en TypeScript
Estoy teniendo un problema con la tipificación en TypeScript y el esquema de mongoose. Tengo el siguiente modelo para un usuario:
export interface IUser extends mongoose.Document {
firstname: string;
lastname: string;
email: string;
password?: string;
lang: string;
color: string;
roles: IRole[];
labs: ILab[];
}
export const UserSchema = new mongoose.Schema({
firstname: {
type: String,
required: [true, 'Firstname required']
},
lastname: {
type: String,
required: [true, 'Lastname required']
},
email: {
type: String,
required: [true, 'Email required']
},
password: {
type: String,
required: [true, 'Password required']
},
lang: {
type: String,
required: [true, 'Lang required']
},
color: {
type: String,
required: [true, 'Color required']
},
roles: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Role'
}
],
labs: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Lab'
}
]
});
La cosa es que quiero hacer una consulta para recuperar todos los usuarios que coincidan con un ID de laboratorio específico, así que hice esto:
User.find({ labs: { $in: req.params.id } })
Pero tengo un error con TypeScript porque el find en realidad está en un array de ObjectId, pero en la interfaz se relaciona con ILab[].
La única manera que encontré es hacer la consulta como Any, pero como sabrás no es ideal usar Any. ¿Sería bueno si alguien tuviera una pista sobre eso?
Respuesta #1
Quizás solo:
import { Schema } from "mongoose";
interface IUser extends mongoose.Document {
...
labs: [{ type: mongoose.Schema.Types.ObjectId, ref: "Lab" }];
}
Tuve el mismo problema y lo arreglé de esta manera.
