是否可以禁用 Mongoose SchemaTypes 的自动类型转换?

Posted

技术标签:

【中文标题】是否可以禁用 Mongoose SchemaTypes 的自动类型转换?【英文标题】:Is it possible to disable automatic type casting for Mongoose SchemaTypes? 【发布时间】:2018-05-07 22:25:30 【问题描述】:

对于具有此 Schema 的模型...

name: type: String

...以下自动将提供的值转换为字符串,而不是强制类型:

document.name = 2; document.validate(err => // Err is null, document.name === '2' )

有没有一种简单的方法可以禁用这种行为?

【问题讨论】:

我认为不可能,请查看post 您应该能够使用覆盖默认转换行为的custom string type 来完成此操作。 【参考方案1】:

您可以在 find/findOne 查询中使用lean() 方法。 lean() 将删除 mongoose 模式的所有影响,即它将返回保存在 MongoDB 中的数据,无需任何类型转换。

注意:- 使用lean() 后,您将无法调用更新或保存返回的数据。 此外,这将提高您的查询性能。

例子

Model.find().lean().exec((err, result) => 
    console.log(result);    //data without any typecasting
    /*some operations on result*/
    result.save(); // this will not work  
);

【讨论】:

【参考方案2】:

以防万一其他人偶然发现这一点,看起来猫鼬会根据this issue 支持这一点。

【讨论】:

以上是关于是否可以禁用 Mongoose SchemaTypes 的自动类型转换?的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 将严格设置为 false 禁用验证

mongoose index

是否可以将 Mongoose obj 模式推送到数组中?

是否可以在 next.js api 中运行 Mongoose?

Mongoose:检查对象是不是为猫鼬对象

Mongoose 4.x“model.update()”回调改变