Node.js 是否可以禁用Mongoose模式类型的自动类型转换?
对于具有此架构的模型Node.js 是否可以禁用Mongoose模式类型的自动类型转换?,node.js,validation,mongoose,schema,Node.js,Validation,Mongoose,Schema,对于具有此架构的模型 { 名称:{type:String} } …以下操作将自动将提供的值强制转换为字符串,而不是强制执行类型: document.name=2; document.validate(err=>{ //错误为空,document.name=='2' }) 有没有一种简单的方法来禁用此行为?您可以在find/findOne查询中使用lean()方法。 lean()将消除mongoose模式的所有影响,即它将返回保存在MongoDB中的数据,而不进行任何类型转换 注意:-使用lean
{
名称:{type:String}
}
…以下操作将自动将提供的值强制转换为字符串,而不是强制执行类型:
document.name=2;
document.validate(err=>{
//错误为空,document.name=='2'
})
有没有一种简单的方法来禁用此行为?您可以在find/findOne查询中使用lean()
方法。
lean()
将消除mongoose模式的所有影响,即它将返回保存在MongoDB中的数据,而不进行任何类型转换
注意:-使用lean()
后,您将无法对返回的数据调用update或save。
此外,这将提高查询性能
范例
Model.find().lean().exec((err, result) => {
console.log(result); //data without any typecasting
/*some operations on result*/
result.save(); // this will not work
});
以防万一其他人偶然发现了这一点,看起来猫鼬将根据支持这一点。我认为这是不可能的,请检查这一点,您应该能够通过覆盖默认施法行为的。