angularjs - 通过角度形式从 mongo 搜索布尔类型字段
问题描述
我必须实现一个简单的搜索(或者在我看来就是这样),我正在搜索的字段在发票上称为“paymentStatus”,它基本上是 mongo db(v3.4)中的布尔值。搜索来自 angular-formly 输入字段(angularJS 1.6),当我发送信息进行搜索时,我可以很容易地看到它记录为“paymentStatus - true”和“paymentStatus-false” -
{ paymentStatus: true }
Formly 字段看起来像这样 -
{
key: 'paymentStatus',
type: 'horizontal-ui-select',
className: 'tooltipLabel',
templateOptions: {
optionsAttr: 'bs-options',
ngOptions: 'option[to.valueProp] as option in to.options | filter: $select.search',
label: $filter('translate')('Payment Status'),
placeholder: $filter('translate')('Payment Status'),
valueProp: 'paymentStatus',
labelProp: 'name',
searchable: true,
tooltipClass: 'wide-tooltip',
options: [
{"paymentStatus": true, "name": 'Paid'},
{"paymentStatus": false, "name": 'Unpaid'},
]
}
},
在后端控制器中,用要显示的数据填充表格(正常工作),我有额外的搜索过滤器代码,如下所示 -
if (where.paymentStatus && where.paymentStatus !== null && where.paymentStatus !== undefined) {
mongoQuery[0].$match["$and"].push({"paymentStatus": {$in: where.paymentStatus}});
}
我尝试使用 $eq 而不是 $in 和基本的真假切换而不是“where.paymentStatus”,这给了我一半的结果一半的时间。“where”来自 request.allParams().data.where。我是数据库工作/搜索的初学者,尤其是正式使用 mongo 和 angular JS。这是很少记录的遗留代码。感谢所有的帮助。
解决方案
没关系,where.paymentStatus
取消了我对虚假状态的查询。也将 $in 替换为 $eq 。现在可以正常工作。
推荐阅读
- c++ - 移动语义和运算符 + 重载
- javascript - 使用 textarea 编辑器编辑后如何重置制表符行高?
- python - 长数转换格式
- excel - 更改最大值范围内 Excel 单元格的背景色
- javascript - 设置画布图像 CSS 图像渲染属性
- javascript - 检查元素是否具有焦点 - Vue.js 指令
- c# - C# complex class constructors
- intellij-idea - Intellij - 更改活动选项卡/编辑器的颜色
- typescript - 堆栈导航器上的反应导航打字稿错误
- julia - 在 Julia 中有效地将 Dict 转换为 NamedTuple