【问题标题】:Dexiejs advanced searchDexiejs 高级搜索
【发布时间】:2018-07-13 06:27:44
【问题描述】:

我正在构建一个库存应用程序。我的搜索字段很少(零件编号、制造商等)。我一直在尝试根据输入字段构建搜索。但似乎没有任何效果。 我试过的东西。

db.version(1).stores({
  parts: "++id,partno,description,category,manufacturer,cost,qty,add_date,condition,location"
});

搜索 1:

var searchParams = { 'partno': 'md101', 'manufacturer': 'apple', 'category': 'notebook'}

搜索 1:

var searchParams = { 'condition': 'new', 'category': 'notebook'}

有效,但区分大小写。我可以让它不区分大小写吗?:

db.parts.where(search); 

失败:

var fields = Object.keys(search);
var values = Object.values(search)
db.parts.where(fields).equals(values);

请帮我解决这个问题。文档没有帮助

谢谢。

【问题讨论】:

    标签: dexie


    【解决方案1】:
    db.parts.where({
      partno: 'md101',
      manufacturer: 'apple',
      category: 'notebook'
    }).toArray().then(result => console.log(result);
    

    上述查询将在条件之间进行逻辑和匹配,并精确匹配。

    要按大小写匹配,请尝试以下操作:

    db.parts.where('partno').equalsIgnoreCase('md101')
      .and(part=>
        part manufacturer &&
        part manufacturer.toLowerCase() === 'apple' &&
        part.category &&
        part.category.toLowerCase() === 'notebook')
     .toArray()
      .then(result => console.log (result))
    

    我们在这里所做的只是利用最广泛的索引并手动过滤掉其余的。

    【讨论】:

    • 感谢回复,有什么办法可以不区分大小写吗?
    • 对不起,我错过了这一点。刚刚用另一个示例更新了答案
    • 另一种策略是以小写形式存储值。如果是这样,您可能还考虑定义三个道具的复合索引以优化对象 - 进一步查询。
    猜你喜欢
    • 1970-01-01
    • 2012-03-11
    • 2015-04-17
    • 2012-04-09
    • 2015-04-06
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多