# Crear la Api
Crearemos la api en el archivo index.js
# Configuración y requerimientos
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const express = require('express');
const cors = require('cors');
// INICIAMOS FIREBASE
const serviceAccount = require('./permissions.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: 'https://fir-cloud-restapi.firebaseio.com',
});
// Instanciamos la base de datos.
const db = admin.firestore();
// INSTANCIAMOS LO QUE SERA NUESTRO SERVIDOR
const app = express();
// Usamos Cors
app.use(cors({ origin: true }));
# Crear post
/*
|-----------------------------------------------
| RUTA - CREAR POSTS
|-----------------------------------------------
*/
app.post('/api/posts', (req, res) => {
(async () => {
try {
let newPost = {
title: req.body.title,
subtitle: req.body.subtitle,
body: req.body.body,
};
let citiesRef = await db.collection('posts');
await citiesRef.add(newPost);
res.status(200).json(newPost);
} catch (error) {
console.log(': --------------------------------');
console.log(': Create Post --> error: ', error);
console.log(': --------------------------------');
res.status(500).send(error);
}
})();
});
# Obtener todos los posts
/*
|-----------------------------------------------
| RUTA - LEER POSTS
|-----------------------------------------------
*/
app.get('/api/posts', (req, res) => {
(async () => {
try {
let citiesRef = await db.collection('posts');
let snapshot = await citiesRef.get();
if (snapshot.empty) {
console.log('No matching documents.');
return;
}
let data = [];
await snapshot.forEach((doc) => {
let dataLoop = {
id: doc.id,
body: doc.data(),
};
data.push(dataLoop);
});
res.status(200).send(data);
} catch (error) {
console.log(': --------------------------------');
console.log(': Get Posts --> error: ', error);
console.log(': --------------------------------');
res.status(500).send(error);
}
})();
});
# Obtener un post
/*
|-----------------------------------------------
| RUTA - LEER UN POST POR SU ID
|-----------------------------------------------
*/
app.get('/api/posts/:id', (req, res) => {
(async () => {
try {
let citiesRef = await db.collection('posts').doc(req.params.id);
let snapshot = await citiesRef.get();
if (!snapshot.exists) {
res.status(404).send('No existe el documento');
}
let response = await snapshot.data();
res.status(200).send(response);
} catch (error) {
console.log(': -----------------------------------');
console.log(': Get One Posts --> error: ', error);
console.log(': -----------------------------------');
res.status(500).send(error);
}
})();
});
# Actualizar post
/*
|-----------------------------------------------
| RUTA - ACTUALIZAR POST POR SU ID
|-----------------------------------------------
*/
app.put('/api/posts/:id', (req, res) => {
(async () => {
try {
let citiesRef = await db.collection('posts').doc(req.params.id);
let snapshot = await citiesRef.get();
if (!snapshot.exists) {
res.status(404).send('No existe el documento');
}
let updatedPost = {
title: req.body.title,
subtitle: req.body.subtitle,
body: req.body.body,
};
await citiesRef.update(updatedPost);
res.status(200).json(updatedPost);
} catch (error) {
console.log(': ----------------------------------');
console.log(': Update Posts --> error: ', error);
console.log(': ----------------------------------');
res.status(500).send(error);
}
})();
});
# Eliminar post
/*
|-----------------------------------------------
| RUTA - ELIMINAR
|-----------------------------------------------
*/
app.delete('/api/posts/:id', (req, res) => {
(async () => {
try {
let citiesRef = await db.collection('posts').doc(req.params.id);
let snapshot = await citiesRef.get();
if (!snapshot.exists) {
res.status(404).send('No existe el documento');
}
let deletedPost = await snapshot.data();
await citiesRef.delete();
res.status(200).json({
deletedPost,
message: `El documento con id: ${req.params.id} ha sido eliminado!`,
});
} catch (error) {
console.log(': ----------------------------------');
console.log(': Delete Posts --> error: ', error);
console.log(': ----------------------------------');
res.status(500).send(error);
}
})();
});
# Exports App
/*
|-----------------------------------------------
| EJECUTA NUESTRA API
|-----------------------------------------------
*/
exports.app = functions.https.onRequest(app);
← Instalaciones Deploy →