简体   繁体   中英

How to run a Node script

I need to be able to run a node script to delete an object from an external API. So I should be able to run this command:

node server.js Customer55555

And it should delete the object.

I have called to the API by using Axios.

const axios = require("axios");

const API = "http://dummy.restapiexample.com/api/v1/employees";
function getAllEmployees() {
  axios
    .get("http://dummy.restapiexample.com/api/v1/employees")
    .then(response => {
      //   console.log(response.data);
      console.log(response.status);
      function filterEmployee() {
        const employeeData = response.data;
        employeeData.filter(employee => {
          console.log(employee);
        });
        // console.log(employeeData);
      }
      filterEmployee();
    })
    .catch(error => {
      console.log(error);
    });
}

function deleteEmployee() {
  axios({
    method: "DELETE",
    url: "http://dummy.restapiexample.com/api/v1/delete/36720",
    headers: { "Content-Type": "application/json" }
  })
    .then(
      // Observe the data keyword this time. Very important
      // payload is the request body
      // Do something
      console.log("user deleted")
    )
    .catch(function(error) {
      // handle error
      console.log(error);
    });
}

// getAllEmployees();
deleteEmployee();

I am able to get an individual object, but I need to figure out how to delete it by running the command above.

You can do something like this:

const axios = require("axios")

const API = "http://dummy.restapiexample.com/api/v1/employees"

async function getAllEmployees(filter = null) {
  try {
    const response = await axios.get("http://dummy.restapiexample.com/api/v1/employees")
    console.log(response.status)
    let employeeData = response.data

    if (filter) {
      // return only employees whose name contains filter.name
      employeeData = employeeData.filter(({ employee_name }) => {
        return employee_name.toLowerCase().indexOf(filter.name.toLowerCase()) >= 0
      })
    }

    return employeeData
   } catch(error) {
     console.error(error)
     return []
   }
}

async function deleteEmployee({ id }) {
  if (!id) {
    throw new Error('You should pass a parameter')
  }
  try {
    const response = await axios({
        method: "DELETE",
        url: `http://dummy.restapiexample.com/api/v1/delete/${id}`,
        headers: { "Content-Type": "application/json" }
    })

    console.log("user deleted " + id)
  } catch(error) {
    // handle error
    console.error(error)
  }
}

async function main(params) {
   const employees = await getAllEmployees({ name: params[0] || '' })
   // Returns a promise to wait all delete promises
   return Promise.all(employess.map(employee => deleteEmployee(employee)))
}

// process.argv contains console parameters. (https://stackoverflow.com/questions/4351521/how-do-i-pass-command-line-arguments-to-a-node-js-program)
main(process.argv.slice(2)).then(() => {
  // returns 0 (Success) (https://stackoverflow.com/questions/5266152/how-to-exit-in-node-js)
  process.exit(0)
}).catch(() => {
  // returns 1 (error)
  process.exit(1)
})

You should adapt this sample to get proper filtering and error reporting.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM