替换多列中多行中的值,为每列提供一个映射对象
Replace values in multiple rows in multiple columns provided a mapped object for each column
在下面的 table 中,我需要使用以下对象
替换名称和 class 列中的值
+----------------+
| id name class |
+----------------+
| 1 a x |
| 2 b y |
| 3 a z |
+----------------+
name
{
a: "John",
b: "Jill"
}
class
{
x: "Maths",
y: "Science",
z: "Arts"
}
最终 table 应如下所示:
+----------------------+
| id name class |
+----------------------+
| 1 John Maths |
| 2 Jill Science |
| 3 John Arts |
+----------------------+
在 dexie.js 中实现此目标的有效方法是什么?
您需要扫描整个 table 并逐行替换。
var map = {
"name": {
"a": "John",
"b": "Jill"
},
"class": {
"x": "Maths",
"y": "Science",
"z": "Arts"
}
};
var db = new Dexie('yourdbname');
db.version(1).stores({
yourTable: 'id'
});
db.yourTable.toCollection().modify(row =>
Object.keys(map).forEach(column => row[column] = map[column][row[column]]));
在下面的 table 中,我需要使用以下对象
替换名称和 class 列中的值+----------------+
| id name class |
+----------------+
| 1 a x |
| 2 b y |
| 3 a z |
+----------------+
name
{
a: "John",
b: "Jill"
}
class
{
x: "Maths",
y: "Science",
z: "Arts"
}
最终 table 应如下所示:
+----------------------+
| id name class |
+----------------------+
| 1 John Maths |
| 2 Jill Science |
| 3 John Arts |
+----------------------+
在 dexie.js 中实现此目标的有效方法是什么?
您需要扫描整个 table 并逐行替换。
var map = {
"name": {
"a": "John",
"b": "Jill"
},
"class": {
"x": "Maths",
"y": "Science",
"z": "Arts"
}
};
var db = new Dexie('yourdbname');
db.version(1).stores({
yourTable: 'id'
});
db.yourTable.toCollection().modify(row =>
Object.keys(map).forEach(column => row[column] = map[column][row[column]]));