Aviso:

Para brindarle información de soporte completa de manera más rápida, el contenido de esta página ha sido traducido al español mediante traducción automática. Para consultar la información de soporte más precisa, consulte la versión en inglés de este contenido.

Configurar la función Advanced I/O

A continuación, comenzaremos a codificar la aplicación de lista de tareas configurando el componente de función.

El directorio de la función, functions/to_do_list_function contiene:

  • El archivo principal de la función index.js
  • El archivo de configuración catalyst-config.json
  • Módulos de Node
  • Los archivos de dependencias package.json y package-lock.json

Agregará código en el archivo index.js.


Las tres APIs en la función Advanced I/O que gestionan el enrutamiento entre el servidor y el Data Store son:

  • GET /todo: Para obtener los elementos de la lista de tareas de la tabla TodoItems en el Data Store
  • POST /todo: Para crear y guardar un nuevo elemento en el Data Store
  • DELETE /todo: Para eliminar un elemento de la lista del Data Store

Instalar el framework Express para Node.js

Necesitaremos usar el framework Express para realizar operaciones de enrutamiento. Para importar el paquete Express en el código de su función, debe instalar la dependencia de Express en su sistema.

Para instalar Express.js en su máquina local, navegue al directorio principal de la función (functions/to_do_list_function) en su terminal y ejecute el siguiente comando:

copy
$
npm install express --save

Esto instalará el módulo Express y guardará las dependencias.

catalyst_to_node_express_install

Esta información también se actualizará en el archivo package.json.

catalyst_todo_package_json


A continuación, agreguemos el código en el archivo de la función. Copie el código de Node.js y péguelo en index.js en el directorio functions/to_do_list_function de su proyecto, y guarde el archivo. Puede usar cualquier IDE de su preferencia para trabajar con los archivos de la aplicación.

Nota: Revise el código proporcionado en esta sección para asegurarse de que lo comprende completamente. Discutiremos la arquitectura de la función y el cliente en la siguiente sección.

index.js
copy
const express = require('express');
const catalystSDK = require('zcatalyst-sdk-node');
const app = express();
app.use(express.json());
app.use((req, res, next) => {
const catalyst = catalystSDK.initialize(req);
res.locals.catalyst = catalyst;
next();
});
//API GET. Obtener tareas existentes, si las hay, del servidor.
app.get('/all', async (req, res) => {
try {
const { catalyst } = res.locals;
const page = parseInt(req.query.page);
const perPage = parseInt(req.query.perPage);
const zcql = catalyst.zcql();
const hasMore = await zcql
.executeZCQLQuery(`SELECT COUNT(ROWID) FROM TodoItems`)
.then((rows) => parseInt(rows[0].TodoItems.ROWID) > page * perPage);
const todoItems = await zcql
.executeZCQLQuery(
`SELECT ROWID,Notes FROM TodoItems LIMIT ${
(page - 1) * perPage + 1
},${perPage}`
)
.then((rows) =>
rows.map((row) => ({
id: row.TodoItems.ROWID,
notes: row.TodoItems.Notes
}))
);
res.status(200).send({
status: 'success',
data: {
todoItems,
hasMore
}
});
} catch (err) {
console.log(err);
res.status(500).send({
status: 'failure',
message: "We're unable to process the request."
});
}
});
// API POST. Contiene la lógica para crear una tarea
app.post('/add', async (req, res) => {
try {
const { notes } = req.body;
const { catalyst } = res.locals;
const table = catalyst.datastore().table('TodoItems');
const { ROWID: id } = await table.insertRow({
Notes:notes
});
res.status(200).send({
status: 'success',
data: {
todoItem: {
id,
notes
}
}
});
} catch (err) {
console.log(err);
res.status(500).send({
status: 'failure',
message: "We're unable to process the request."
});
}
});
// API DELETE. Contiene la lógica para eliminar una tarea.
app.delete('/:ROWID', async (req, res) => {
try {
const { ROWID } = req.params;
const { catalyst } = res.locals;
const table = catalyst.datastore().table('TodoItems');
await table.deleteRow(ROWID);
res.status(200).send({
status: 'success',
data: {
todoItem: {
id: ROWID
}
}
});
} catch (err) {
console.log(err);
res.status(500).send({
status: 'failure',
message: "We're unable to process the request."
});
}
});
module.exports = app;

View more

El directorio de funciones está ahora configurado.

Última actualización 2026-03-20 21:51:56 +0530 IST