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

时间:2019-06-12 21:17:47

标签: node.js mongodb mongoose

是否可以在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 };

  }

1 个答案:

答案 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'