ForgeTotal.js 5
sk

Total.js 5

Porovnajte dva zoznamy pomocou DIFFARR: čo pridať, aktualizovať a odstrániť

Total.js 5 · total5@0.0.19 utilitiesarraysforms Spustené s Total.js 5

DIFFARR(property, saved, submitted) porovná dve polia objektov podľa jednej vlastnosti a vráti objekt s tromi zoznamami:

  • add: objekty z submitted, ktorých vlastnosť nie je v saved
  • upd: pre objekty, ktoré sú v oboch, { db, form } s uloženým a odoslaným objektom
  • rem: hodnoty vlastnosti (nie objekty) položiek z saved, ktoré nie sú v submitted

Je to obvyklý krok pri ukladaní upraviteľného zoznamu: formulár pošle celý zoznam a vy potrebujete vedieť, čo sa vytvorilo, čo sa zmenilo a čo sa zmazalo. Hodnoty sa porovnávajú pomocou ==, takže 1 a '1' sú tá istá položka.

controllers/lists.js
const saved = [
	{ id: 1, name: 'Book' },
	{ id: 2, name: 'Pen' },
	{ id: 3, name: 'Lamp' }
];

exports.install = function() {
	ROUTE('POST /sync/', sync);
};

function sync($) {
	const diff = DIFFARR('id', saved, $.body.items);
	$.json({
		add: diff.add,
		update: diff.upd.map(n => ({ id: n.db.id, from: n.db.name, to: n.form.name })),
		remove: diff.rem
	});
}