Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Wierd猫鼬/猫鼬行为_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Node.js Wierd猫鼬/猫鼬行为

Node.js Wierd猫鼬/猫鼬行为,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,为什么在mongoose(或者mongodb)中,布尔false不保存在数据库中,但它们存在于结果中 猫鼬模式: fav:{type:Boolean,默认值:false} 现在,如果我将它标记为true(通过表单输入),则只有它存储在数据库中,否则如果它是“未定义的”(如果未在表单中签入),则不会保存它 但如果我获取该字段,它将按预期输出适当的结果。 i、 e如果fav为true,则为“true”,否则为false 问题是,如果我想查询所有fav为false的文档,那么我只会得到一个返回的空数组

为什么在mongoose(或者mongodb)中,布尔
false
不保存在数据库中,但它们存在于结果中

猫鼬模式:
fav:{type:Boolean,默认值:false}

现在,如果我将它标记为true(通过表单输入),则只有它存储在数据库中,否则如果它是“未定义的”(如果未在表单中签入),则不会保存它

但如果我获取该字段,它将按预期输出适当的结果。 i、 e如果fav为
true
,则为“true”,否则为
false

问题是,如果我想查询所有
fav
为false的文档,那么我只会得到一个返回的空数组,因为当值为false时,该字段(
fav
)不会保存在数据库中,
但是我可以轻松地查询
fav
==true,因为它们保存在数据库中。

MongoDB将
false
存储在数据库中。如果你模糊地描述的事情真的发生了,那一定是因为猫鼬发出的声音。尝试将debugging设置为true,并查看实际插入的内容。如果我没有在表单中勾选'fav'输入,则会将其设置为'undefined',这是可以理解的,这就是我将默认选项设置为false的原因。但是,如果它是“未定义的”,则不会设置默认值,这很奇怪。如果未定义,我希望它标记为false。然后它在MongoDB中保存
undefined
,它将被保存为
null
,这是一个与
false
不同的值。添加一些逻辑以保存
false
,而不是
undefined
。我猜Mongoose将
未定义的
计算为布尔类型可能会被认为是一个错误。如果某项技术不能按预期工作,那么指责该技术是错误的。请出示您的密码。既然你说的是勾选某物:如果我们说的是HTML表单复选框,那么这个值如果没有勾选就不会发送,因此它在JS中没有定义,在MongoDb中保存为null。但这告诉我,您正在将表单直接保存到MongoDB,这是一种非常糟糕的做法。在保存之前,应规范化和清理所有用户输入。