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 IO

Ahora comenzaremos a codificar la aplicación de gestión de tareas configurando el componente de función.

El directorio de la función, functions/task_manager_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.

La función Advanced I/O contiene las siguientes funcionalidades:

Método de solicitud Endpoint Propósito
POST /addtask Para crear una nueva tarea.
GET /filtertask Para filtrar las tareas creadas por los campos UserID, TaskName o Status.
DELETE /deletetask Para eliminar tareas que ya no son necesarias.
POST /updatetask Para actualizar el contenido de una tarea existente.

Instalar dependencias requeridas

Utilizaremos los frameworks Express y Axios para codificar la función Advanced I/O. Para importar los paquetes Express y Axios en el código de su función, debe instalar las dependencias requeridas en su sistema.

Nombre del paquete Propósito
Express Para enrutar solicitudes HTTP.
Axios Para enviar y gestionar solicitudes HTTP.

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

copy
$
npm install express axios --save

catalyst_tutorials_nosql_taskmanager_func_cli_pack_install

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

Ahora, comencemos a codificar la función Advanced I/O.

Copie el código proporcionado a continuación y péguelo en el archivo index.js en el directorio functions/task_manager_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 de esta sección para asegurarse de que lo comprende completamente.
index.js
copy
'use strict';
var express=require('express');
var catalyst=require('zcatalyst-sdk-node');
const{NoSQLItem}=require('zcatalyst-sdk-node/lib/no-sql');
const{NoSQLReturnValue,NoSQLConditionGroupOperator}=require('zcatalyst-sdk-node/lib/no-sql/enum');
const{NoSQLMarshall,NoSQLEnum}=require('zcatalyst-sdk-node/lib/no-sql');
const{NoSQLOperator}=NoSQLEnum;
var app=express();
app.use(express.json());
app.use(express.static('public'));
// Agregar una tarea
app.post('/addtask',async(req,res)=>{
  let{userID,taskName,dueDate,priority,status}=req.body;
  var capp=catalyst.initialize(req);
  const nosql=capp.nosql();
  const table=nosql.table('YOUR_TABLE_ID');
  try{
    await table.insertItems({
      item:NoSQLItem.from({UserID:userID,DueDate:dueDate,TaskName:taskName,Priority:priority,Status:status}),
      return:NoSQLReturnValue.NULL
    });
    res.send({message:"Thanks! Your task has been successfully inserted."});
  }catch(error){
    res.status(500).send({error:"Internal server error occurred. Please try again in some time."});
  }
});
// Filtrar tarea
app.get('/filtertask',async(req,res)=>{
  const query=req.query;
  const parsedData={index_data:{userID:query.userID,taskName:query.taskName,status:query.status}};
  const userId=parsedData.index_data.userID;
  var capp=catalyst.initialize(req);
  const nosql=capp.nosql();
  const table=nosql.table('YOUR_TABLE_ID');
  try{
    if(userId!=null&&parsedData.index_data.taskName===''){
      if(parsedData.index_data.status==='')return res.status(400).json({error:"Oops! You forgot to select a status."});
      const groupOpInsert=await table.queryTable({
        key_condition:{attribute:'UserID',operator:NoSQLOperator.EQUALS,value:NoSQLMarshall.makeString(parsedData.index_data.userID)},
        consistent_read:true,
        limit:10,
        forward_scan:true
      });
      let responseData=[];
      groupOpInsert.getResponseData().forEach(data=>{
        responseData.push({
          UserID:data.item.get("UserID"),
          TaskName:data.item.get("TaskName"),
          DueDate:data.item.get("DueDate"),
          Priority:data.item.get("Priority"),
          Status:data.item.get("Status")
        });
      });
      const filteredData=await filterByStatus(responseData,parsedData);
      res.status(200).send(filteredData);
    }else if(userId!=null&&parsedData.index_data.taskName!=null){
      if(parsedData.index_data.status==='')return res.status(400).json({error:"Oops! You forgot to select a status."});
      const groupOpInsert=await table.queryTable({
        key_condition:{
          group_operator:NoSQLConditionGroupOperator.AND,
          group:[
            {attribute:'UserID',operator:NoSQLOperator.EQUALS,value:NoSQLMarshall.makeString(parsedData.index_data.userID)},
            {attribute:'TaskName',operator:NoSQLOperator.EQUALS,value:NoSQLMarshall.makeString(parsedData.index_data.taskName)}
          ]
        },
        consistent_read:true,
        limit:10,
        forward_scan:true
      });
      let responseData=[];
      groupOpInsert.getResponseData().forEach(data=>{
        responseData.push({
          UserID:data.item.get("UserID"),
          TaskName:data.item.get("TaskName"),
          DueDate:data.item.get("DueDate"),
          Priority:data.item.get("Priority"),
          Status:data.item.get("Status")
        });
      });
      const filteredData=await filterByStatus(responseData,parsedData);
      res.send(filteredData);
    }else return res.send("Kindly enter partiyion key user ID and sort key Taskname");
  }catch(error){
    res.status(500).send({error:"Internal server error occurred. Please try again in some time."});
  }
});
// Eliminar tarea
app.delete('/deletetask',async(req,res)=>{
  const query=req.query;
  const parsedData={index_data:{userID:query.userID,taskName:query.taskName}};
  var capp=catalyst.initialize(req);
  const nosql=capp.nosql();
  const table=nosql.table('YOUR_TABLE_ID');
  try{
    await table.deleteItems({keys:NoSQLItem.from({UserID:parsedData.index_data.userID,TaskName:parsedData.index_data.taskName})});
    res.status(200).json({message:"Data deleted successfully!"});
  }catch(error){
    res.status(500).send({error:"Internal server error occurred. Please try again in some time."});
  }
});
// Actualizar tarea
app.post('/updatetask',async(req,res)=>{
  let{UserID,TaskName,DueDate,Priority,Status}=req.body;
  var capp=catalyst.initialize(req);
  const nosql=capp.nosql();
  const table=nosql.table('YOUR_TABLE_ID');
  try{
    await table.insertItems({
      item:NoSQLItem.from({UserID:UserID,DueDate:DueDate,TaskName:TaskName,Priority:Priority,Status:Status}),
      return:NoSQLReturnValue.NULL
    });
    res.send({message:"Items updated successfully!"});
  }catch(error){
    res.status(500).send({error:"Internal server error occurred. Please try again in some time."});
  }
});
async function filterByStatus(data,parseData){
  return data.filter(task=>task.Status.toLowerCase()===parseData.index_data.status.toLowerCase());
}
module.exports=app;
View more
Nota: Asegúrese de proporcionar el ID de su tabla en las líneas 16, 34, 93 y 106.

El directorio de la función está ahora configurado. Podemos proceder a configurar el directorio del cliente.

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