是否可以在NodeJS控制器中查找Mongoose模型中字段的数据类型?
我正在Node 12和Mongoose 5中构建NodeJS API。
我正在使用mongoose-pagination-v2插件建立分页。
我想动态生成Mongodb查询运算符。我遇到的问题是,在动态创建Mongodb查询运算符之前,我需要知道要过滤的字段的数据类型。我希望能够检查模型字段的数据类型以应用正确的Mongo查询操作类型。
否则,我会将错误的操作类型应用于数据类型。例如CastError: Cast to Can't use $options with Number
我想做的示例伪代码:
if (myModel[filterBy].type === 'String') { // A fake condition, I want to check the model data type here... is this possible?
// String filtering
const filterOperator = { [filterBy]: { "$regex": filterValue }};
} else if (myModel[filterBy].type === 'Number') { // Is this possible?
// Number filtering
const filterOperator = { [filterBy]: filterValue };
}
答案 0 :(得分:1)
您可以从架构中获取类型 (来自猫鼬文档)
const schema = new Schema({ name: String });
schema.path('name') instanceof mongoose.SchemaType; // true
schema.path('name') instanceof mongoose.Schema.Types.String; // true
schema.path('name').instance; // 'String'
在您的示例中:
myModel.schema.path(filterBy).instance === 'String'