首页 > 解决方案 > 通过角度形式从 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。这是很少记录的遗留代码。感谢所有的帮助。

标签: angularjsmongodbangular-formly

解决方案


没关系,where.paymentStatus取消了我对虚假状态的查询。也将 $in 替换为 $eq 。现在可以正常工作。


推荐阅读