ForgeTotal.js 5
de

Total.js 5

Mit der DATA-API die Datenbank wechseln

Total.js 5 · total5@0.0.19 databasenosqlquerybuilder Mit Total.js 5 ausgeführt

DATA ist ein datenbankunabhängiger Einstieg in den Query-Builder. Das erste Argument ist driver/table; nosql/people bedeutet "die eingebaute NoSQL-Datenbank, Tabelle people". Die Builder-Methoden (where, sort, take, callback) sind dieselben wie bei NOSQL(), der Code deiner Actions bleibt also gleich, wenn du den Treiber später austauschst.

AufrufTut
DATA.insert(table, doc)fügt ein Dokument ein
DATA.find(table)liefert einen Builder für eine Liste
DATA.read(table)liefert einen Builder für ein Dokument
DATA.update(table, data)aktualisiert Dokumente
DATA.remove(table)entfernt Dokumente
definitions/people.js
NEWACTION('People/insert', {
	name: 'Insert a person',
	input: '*name:String, age:Number',
	action: function($, model) {
		model.id = UID();
		DATA.insert('nosql/people', model).callback(() => $.success(model.id));
	}
});

NEWACTION('People/query', {
	name: 'List people',
	query: 'sort:Lowercase',
	action: function($) {
		DATA.find('nosql/people').sort($.query.sort || 'name_asc').callback((err, response) => $.callback(response));
	}
});

NEWACTION('People/rename', {
	name: 'Rename a person',
	params: '*id:UID',
	input: '*name:String',
	action: function($, model) {
		DATA.update('nosql/people', { name: model.name }).where('id', $.params.id).callback((err, count) => $.success(count));
	}
});
controllers/people.js
exports.install = function() {
	ROUTE('POST /people/ --> *People/insert');
	ROUTE('GET /people/ --> *People/query');
	ROUTE('PATCH /people/{id}/ --> *People/rename');
};