检查NodeJS控制器中的Mongoose模型字段数据类型

pn9klfpd  于 2023-06-23  发布在  Go
关注(0)|答案(1)|浏览(130)

是否可以在NodeJS控制器中查找Mongoose模型中字段的数据类型?
我正在Node 12和Mongoose 5中构建NodeJS API。
我正在使用mongoose-pagination-v2插件构建分页。
我想动态生成Mongodb查询操作符。我遇到的问题是,在动态创建Mongodb查询操作符之前,我需要知道要过滤的字段的数据类型。我希望能够检查模型字段的数据类型,以应用正确类型的Mongo查询操作。
否则,我将对数据类型应用不正确的操作类型。例如CastError: Cast to Can't use $options with Number
我想做什么的psuedocode示例:

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 };

  }
fkaflof6

fkaflof61#

您可以从模式中获取类型(来自mongoose文档)

const schema = new Schema({ name: String });
schema.paths('name') instanceof mongoose.SchemaType; // true
schema.paths('name') instanceof mongoose.Schema.Types.String; // true
schema.paths('name').instance; // 'String'

在您的示例中:

myModel.schema.paths(filterBy).instance === 'String'

相关问题