Typescript 条件条件建筑猫鼬

Typescript 条件条件建筑猫鼬,typescript,mongoose,Typescript,Mongoose,每个文档都有一些日期,我希望能够对其进行排序和筛选。日期筛选应根据输入sortBy应用 // ... var aFieldName = filters[i].fieldName; if (sortBy == filters[i].fieldName) { query.or([ {

每个文档都有一些日期,我希望能够对其进行排序和筛选。日期筛选应根据输入
sortBy
应用

                // ...
                var aFieldName = filters[i].fieldName;
                if (sortBy == filters[i].fieldName) {
                    query.or([
                        {
                            aFieldName: {
这很有效 开始时,我成功地添加了条件
。其中

        // input examples

        var fromUnixms, toUnixms; // some unix ms timestamps
        var filters = ['createdAt', 'publishAt', 'publishFrom', 'publishTo'] // available date fields
        var sortBy = 'createdAt'; // the field we want to sort on

        // let's build a condition, 
        // looping through the sortable fields and filter based on what is sorted on

        let query = model.find();
        for (var i = 0; i < filters.length; i++) {
            if (sortBy == filters[i].fieldName) {
                query.where(filters[i].fieldName).gte(fromUnixms);
                query.where(filters[i].fieldName).lte(toUnixms);

                console.log("filtering on " + filters[i].fieldName 
                    + " between " + moment(fromUnixms) 
                    + " and " + moment(toUnixms);
                }
            }
        }

        query.sort(sortBy);
Typescript不允许对象中出现这样的键动态(
过滤[i].fieldName
),表示点所在的位置需要一个

提取到一个变量会编译,但不会命中:Mongoose可能会将其解释为我正在寻找一个名为
“aFieldName”
的字段,而不是
“createdAt”
,即
sortBy
的值

                // ...
                var aFieldName = filters[i].fieldName;
                if (sortBy == filters[i].fieldName) {
                    query.or([
                        {
                            aFieldName: {
Mustaches obv也不编译,但说明了我在这里尝试实现的目标:

                    query.or([
                        {
                            {{ filters[i].fieldName }} : {