Utiliser l'API DATA pour changer de base de données
DATA est un point d'entrée du query builder indépendant de la base de données. Le premier argument est driver/table ; nosql/people signifie « la base NoSQL intégrée, table people ». Les méthodes du builder (where, sort, take, callback) sont les mêmes que celles de NOSQL(), donc le code de vos actions reste identique si vous remplacez le driver plus tard.
| Appel | Fait |
|---|---|
DATA.insert(table, doc) | insère un document |
DATA.find(table) | renvoie un builder pour une liste |
DATA.read(table) | renvoie un builder pour un document |
DATA.update(table, data) | met à jour des documents |
DATA.remove(table) | supprime des documents |
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));
}
});exports.install = function() {
ROUTE('POST /people/ --> *People/insert');
ROUTE('GET /people/ --> *People/query');
ROUTE('PATCH /people/{id}/ --> *People/rename');
};