@less-is-more/less-js 1.4.7 → 1.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/db.js +11 -5
- package/test/data/test.js +9 -0
- package/test/test-db.js +6 -3
package/package.json
CHANGED
package/src/db.js
CHANGED
|
@@ -95,15 +95,15 @@ module.exports = class Db {
|
|
|
95
95
|
compareColumn = []
|
|
96
96
|
) {
|
|
97
97
|
for (let nNewData of newData) {
|
|
98
|
-
|
|
98
|
+
const nOldIndex = oldData.findIndex(
|
|
99
99
|
(nOld) => nOld[keyColumn] == nNewData[keyColumn]
|
|
100
100
|
);
|
|
101
|
-
if (nOldIndex
|
|
101
|
+
if (nOldIndex == -1) {
|
|
102
102
|
await this.add(model, nNewData);
|
|
103
103
|
} else {
|
|
104
|
+
const nOldData = oldData[nOldIndex];
|
|
104
105
|
let needUpdate = false;
|
|
105
106
|
if (compareColumn.length > 0) {
|
|
106
|
-
const nOldData = oldData[nOldIndex];
|
|
107
107
|
for (let nColumn of compareColumn) {
|
|
108
108
|
if (nOldData[nColumn] !== nNewData[nColumn]) {
|
|
109
109
|
console.log("Diff", nOldData[nColumn], nNewData[nColumn]);
|
|
@@ -116,15 +116,21 @@ module.exports = class Db {
|
|
|
116
116
|
}
|
|
117
117
|
if (needUpdate) {
|
|
118
118
|
let where = {};
|
|
119
|
-
|
|
119
|
+
// 有主键的话,使用主键
|
|
120
|
+
if (nOldData.id) {
|
|
121
|
+
where.id = nOldData.id;
|
|
122
|
+
} else {
|
|
123
|
+
where[keyColumn] = nNewData[keyColumn];
|
|
124
|
+
}
|
|
120
125
|
// 只更新指定的字段
|
|
121
126
|
let setValues = {};
|
|
122
127
|
for (let nColumn of compareColumn) {
|
|
123
128
|
setValues[nColumn] = nNewData[nColumn];
|
|
124
129
|
}
|
|
125
130
|
await this.update(model, setValues, where);
|
|
126
|
-
oldData.splice(nOldIndex, 1);
|
|
127
131
|
}
|
|
132
|
+
// 剔除已经处理的
|
|
133
|
+
oldData.splice(nOldIndex, 1);
|
|
128
134
|
}
|
|
129
135
|
}
|
|
130
136
|
// 删除旧剩余的
|
package/test/data/test.js
CHANGED
|
@@ -22,6 +22,15 @@ module.exports = sequelize => {
|
|
|
22
22
|
comment: null,
|
|
23
23
|
field: "name"
|
|
24
24
|
},
|
|
25
|
+
value: {
|
|
26
|
+
type: DataTypes.STRING(50),
|
|
27
|
+
allowNull: true,
|
|
28
|
+
defaultValue: null,
|
|
29
|
+
primaryKey: false,
|
|
30
|
+
autoIncrement: false,
|
|
31
|
+
comment: null,
|
|
32
|
+
field: "value"
|
|
33
|
+
},
|
|
25
34
|
};
|
|
26
35
|
const options = {
|
|
27
36
|
tableName: "test",
|
package/test/test-db.js
CHANGED
|
@@ -7,7 +7,7 @@ const Test = require("./data/test.js");
|
|
|
7
7
|
describe("db.js", () => {
|
|
8
8
|
before(() => {
|
|
9
9
|
console.log("init");
|
|
10
|
-
Db.init("127.0.0.1", "
|
|
10
|
+
Db.init("127.0.0.1", "sheng-test", "dev", "^wXj&CJQfiPP");
|
|
11
11
|
});
|
|
12
12
|
describe("getInstance()", () => {
|
|
13
13
|
it("connect", async () => {
|
|
@@ -167,12 +167,15 @@ describe("db.js", () => {
|
|
|
167
167
|
it("success", async () => {
|
|
168
168
|
let newData = [
|
|
169
169
|
{
|
|
170
|
-
name: 23,
|
|
170
|
+
name: "23",
|
|
171
|
+
value: "3",
|
|
171
172
|
},
|
|
172
173
|
];
|
|
173
174
|
let oldData = await Db.find(Test);
|
|
174
175
|
try {
|
|
175
|
-
await Db.fullUpdate(Test, newData, oldData.rows, "name", true
|
|
176
|
+
await Db.fullUpdate(Test, newData, oldData.rows, "name", true, [
|
|
177
|
+
"value",
|
|
178
|
+
]);
|
|
176
179
|
} catch (e) {
|
|
177
180
|
console.error(e);
|
|
178
181
|
assert(false);
|