Si no lo has hecho, te recomiendo leer primero Diseñando APIS RESTful de RethinkDB, NodeJS y Express, si ya lo leíste, es el momento de usar Express para crear los Endpoints de nuestra API, la aplicación tendrá tres comandos: list, add y empty.
Para empezar a crear nuestra API, primero necesitamos iniciar Express en una variable, empezamos por conectar el middleware y finalmente definimos la ruta para cada uno de los Endpoints, como vamos a trabajar con la tabla “lista”, nuestras rutas serán:
varapp = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(multer());
app.route('/list/list').get(list);
app.route('/list/add').put(add);
app.route('/list/empty').post(empty);
Como podemos ver en el código, basta con señalar la ruta, el protocolo y establecer un callback de forma muy sencilla. Estas recibirán tres argumentos:
Para crear nuestros endpoints, recomiendo revisar la API de RethinkDB y hacer pruebas en la consola web de nuestro servidor antes de implementar el código.
Para implementar la API en nuestros Endpoints recuerda crear o reiniciar una conexión y después usarla junto al comando que deseemos, en nuestro ejemplo usaremos las siguientes funciones:
var list = function(request, res, next) {
r.connect(config.rethinkdb)
.then(function(conn) {
r.table(table).orderBy({index: "createdAt"}).run(conn)
.then( function(data) {
var query = data._responses[0].r;
res.send(query);
})
.error(handleError(res))
});
}
list() devuelve un array con todos los datos en esa tabla, usa el index createdAt para mostrarlos en el orden en que fueron creados.
var add = function(request, res, next) {
var element = request.body;
element.createdAt = r.now();
r.connect(config.rethinkdb)
.then(function(conn) {
r.table(table).insert(element).run(conn)
.error(handleError(res))
});
}
add() inserta un nuevo elemento en la tabla, usa la función now() para guardar el momento en que fue creado el elemento en el key createdAt, este dato se usa como index de la tabla.
var empty = function(request, res, next) {
r.connect(config.rethinkdb)
.then(function(conn) {
r.table(table).delete({returnChanges: true}).run(conn)
.error(handleError(res))
});
}
empty() borra todos los elementos de la tabla. Usa este comando con cuidado.
Y para finalizar, creamos una función que en este ejemplo llamaremos handleError() que vamos a llamar cuando tengamos un error en el servidor.
var handleError = function(res) {
returnfunction(error){
res.send(500,{error: error.message});
}
}
En la siguiente parte, terminaremos este tutorial aprendiendo como usar Express como servidor de archivos estáticos y usaremos jQuery para comunicarnos y estrenar nuestros Endpoints.
nice post