我有一个包含布尔字段的文档的mongo集合:
{
name : "Tom",
active : true
}
{
name : "Jerry",
active : false
}
在我的应用程序的客户端,我有一个元素,当点击它时,会触发一个AJAX post,查找所有包含active is = true或active is = false的文档。
所以ajax post如下:
jQuery.ajax({
url : "/dev/search/searchMongo",
type : "POST",
data : {
JSON.stringify({ active : false })
},
success : function(html) {
alert(html)
}
})
问题是查询中的false值作为POST的一部分被解析为字符串。据我所知,我对此无能为力。
是否可以结构化查询,以便mongo将字符串视为布尔值?我已经浏览了文档,并找到了$type操作符,它允许您基于值数据类型进行搜索,因此我认为可能有一些方法可以实现我正在寻找的内容。如果没有,我会抛出一些服务器端转换逻辑,但如果可能的话,我想避免这种情况。
这里的问题是如何发送数据以及如何在接收端处理数据。您真正想做的是将请求的"主体"作为JSON发布,然后确保您的服务器实现以您拥有该数据的方式解析JSON主体。默认为"form encoded"。
你的ajax请求应该是这样的:
jQuery.ajax({
url : "/dev/search/searchMongo",
type : "POST",
data : JSON.stringify({
active : false
}),
success : function(html) {
alert(html)
}
})
然后,服务器端的应用程序端"解析"主体,允许JSON作为对象输出。
在另一端,正常的"RESTful"服务中的"body parser"部分应该将JSON"String"转换为实际对象。对于您的服务器来说,除了JavaScript之外的其他语言都应该是这种情况,但您可能需要查看解析器的实现。