我想将我的 dexie 值更改为空字符串

Posted

技术标签:

【中文标题】我想将我的 dexie 值更改为空字符串【英文标题】:I want to change my dexie values which are null to empty strings 【发布时间】:2021-12-12 12:15:52 【问题描述】:

我想将我的数据表值更改为空字符串。

有时部门值会为空,在这种情况下,它会将 null 放入我的数据表中。

db = db_open();

db.fuel.toArray().then(fuel => 
  fuel.forEach(function(fuel)  
    $('#table_bod').append('<tr> <td>'+fuel.department+'</td> </tr> ');
  )
);

我试过了:

const fuels = db.fuel.where(department: null);

但这似乎不起作用。

【问题讨论】:

请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

IndexedDB 无法与 null 匹配,因此您必须进行全表扫描才能找到它们。

const fuelsWithoutDepartment = await db.fuel
  .filter(x => x.department === null)
  .toArray();

创建一个升级程序,将所有 null 部门修改为空字符串,以防你想要它而不是 null。

db.version(2).stores(
  fuel: 'id, department'
).upgrade (tx => 
  return tx.fuel.filter(
    x => x.department === null
  ).modify(department: "");
);

一旦您声明了这样的升级程序(请根据您的情况将其调整为适当的版本、ID 和索引),那么您将不再需要全表扫描来查找没有部门的燃料,但可以使用部门索引(如果你有的话):

const fuelsWithoutDepartment = await db.fuel
  .where(department: "")
  .toArray();

【讨论】:

我发现这对于将新数据直接添加到 dexieDB 而不是从 mysql 时非常有用,因此当添加数据时我的**现在声明的更新程序确保我的 dexie 数据库中没有 null * * .谢谢你

以上是关于我想将我的 dexie 值更改为空字符串的主要内容,如果未能解决你的问题,请参考以下文章

你能把 null 的本地 dexie DB 值更改为一个没有值的字符串吗

将 TEXT 列默认值从 null 更改为 ''(空字符串)

如何将空输入值更改为空数组?

将未定义更改为空字符串

将字符串字段值更改为其子字符串的最有效方法

XmlReader 创建空字符串 C#