uni-app 数据筛选语句 and 筛选失效

uni-app 数据筛选语句 and 筛选失效

信息类别 信息内容
产品分类 uniCloud/App
操作系统 Windows
操作系统版本 22000.2538
HBuilderX类型 正式
HBuilderX版本 4.08
浏览器平台 Chrome
浏览器版本 124.0.6367.60
项目创建方式 HBuilderX

操作步骤:

数据表创建list表,新增数据:[{incomingTime:'2024/04/21 15:24:38'}];
const startDate = new Date('2024/04/21').toISOString()
const endDate = new Date('2024/04/22').toISOString()
db.collection('list').where({incomingTime:db.command.gt(startDate).and(db.command.lt(endDate))}).get()

预期结果:

返回表满足条件的[{incomingTime:'2024/04/21 15:24:38'}]这条数据

实际结果:

返回空数组

bug描述:

筛选语句db.command.gt(*) .and(db.command.lt(*))
数据表创建list表,新增数据:[{incomingTime:'2024/04/21 15:24:38'}];
const startDate = new Date('2024/04/21').toISOString()
const endDate = new Date('2024/04/22').toISOString()
db.collection('list').where({incomingTime:db.command.gt(startDate).and(db.command.lt(endDate))}).get()
搜索出来的是空数组


更多关于uni-app 数据筛选语句 and 筛选失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

只有数字才能比较大小, 需要把时间存成时间戳的格式,不能存时间字符串

更多关于uni-app 数据筛选语句 and 筛选失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在使用 uni-app 进行数据筛选时,可能会遇到筛选语句失效的问题。以下是一些常见的原因和解决方案:

1. 数据源问题

确保你的数据源是一个数组,并且数据格式正确。如果数据源不是数组,或者数据格式不正确,筛选语句可能会失效。

let data = [
    { id: 1, name: 'Alice', age: 25 },
    { id: 2, name: 'Bob', age: 30 },
    { id: 3, name: 'Charlie', age: 35 }
];

let filteredData = data.filter(item => item.age > 30);
console.log(filteredData); // 输出: [{ id: 3, name: 'Charlie', age: 35 }]

2. 筛选条件问题

确保你的筛选条件是正确的。如果条件写错了,筛选结果可能会为空或不正确。

// 错误的筛选条件
let filteredData = data.filter(item => item.age > 40);
console.log(filteredData); // 输出: []

// 正确的筛选条件
let filteredData = data.filter(item => item.age > 30);
console.log(filteredData); // 输出: [{ id: 3, name: 'Charlie', age: 35 }]

3. 异步数据问题

如果你的数据是异步获取的,确保在数据加载完成后再进行筛选操作。

onLoad() {
    setTimeout(() => {
        this.data = [
            { id: 1, name: 'Alice', age: 25 },
            { id: 2, name: 'Bob', age: 30 },
            { id: 3, name: 'Charlie', age: 35 }
        ];
        this.filterData();
    }, 1000);
},
methods: {
    filterData() {
        this.filteredData = this.data.filter(item => item.age > 30);
    }
}

4. 响应式数据问题

uni-app 中,如果你使用了 Vue 的响应式数据,确保你在修改数据后重新筛选。

data() {
    return {
        data: [
            { id: 1, name: 'Alice', age: 25 },
            { id: 2, name: 'Bob', age: 30 },
            { id: 3, name: 'Charlie', age: 35 }
        ],
        filteredData: []
    };
},
methods: {
    updateData() {
        this.data.push({ id: 4, name: 'David', age: 40 });
        this.filterData();
    },
    filterData() {
        this.filteredData = this.data.filter(item => item.age > 30);
    }
}

5. 筛选方法问题

确保你在正确的地方调用筛选方法。例如,如果你在 onLoad 中调用筛选方法,但数据是在 onShow 中加载的,筛选可能会失效。

onLoad() {
    // 这里调用筛选方法可能会失效,因为数据还未加载
    this.filterData();
},
onShow() {
    this.data = [
        { id: 1, name: 'Alice', age: 25 },
        { id: 2, name: 'Bob', age: 30 },
        { id: 3, name: 'Charlie', age: 35 }
    ];
    // 在数据加载完成后调用筛选方法
    this.filterData();
}

6. 调试

如果问题依然存在,可以使用 console.log 来调试,查看数据源、筛选条件和筛选结果是否符合预期。

console.log('Data:', this.data);
console.log('Filtered Data:', this.filteredData);
回到顶部