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

I want to change my dexie values which are null to empty strings

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

有时 department 值为空,在这种情况下它会在我的数据表中放入 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});

但这似乎不起作用。

IndexedDB 无法与 null 匹配,因此为了找到那些您必须进行完整 table 扫描。

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

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

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

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

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