使用 mysql LIKE 对多个列进行 indexeddb 搜索

Indexeddb search on multiple columns using mysql LIKE

提问人:Luk 提问时间:10/25/2023 最后编辑:Luk 更新时间:10/26/2023 访问量:55

问:

我正在开发一个 PWA,我有一个数据库,我想像这样查询:

SELECT * FROM plants WHERE (plant_genus LIKE 'Ab%') AND (plant_species LIKE 'pr%')

索引的定义如下:

surveyPlantsOS.createIndex("multiple", ['plant_genus', 'plant_species', 'occurrence'], { unique: false });

我尝试了以下方法:

const midRange = IDBKeyRange.bound(['Ab','pr'], ['Ab'+'\uffff','pr'+'\uffff']); let cursor = await dbTT.getAllFromIndex('tt_survey_plants', 'multiple', midRange)

这在第一列上工作正常,但忽略第二列。

我希望“Ab”在“plant_genus”列上搜索,“pr”在“plant_species”列上搜索

任何帮助将不胜感激。

目前,我已经通过以这种方式解析结果集解决了这个问题:

  if (cursor) {
    for (const [key, value] of Object.entries(cursor)) {
      if (arrChars.length > 1) {
        if (value.plant_species.indexOf(arrChars[1]) != -1) {
          //console.log('found ', `${value.plant_genus} ${value.plant_species} `)
          data[value.plant_genus+' '+value.plant_species] = null    
        }
      }
      else
        data[value.plant_genus+' '+value.plant_species] = null
    }
  }
索引EDDB

评论


答: 暂无答案