When I use a simple for loop to access array values, the index variable gets lost therefore unable to access array. Using index number instead of variable works but not variable. This is the most annoying code ever.
/* jshint esnext: true, asi: true */
var neo4j = require('node-neo4j')
// Create the neo4J object
var db = new neo4j(serverURI)
exports.addPerson = (body, callback) => {
if (body.skills) {
    var sentSkills = body.skills
     var arraySkills = sentSkills.split(',')
}else {
    var sentSkills  = []
}
const sentName = body.name
const sentEmail = body.email
const sentUsername = body.username
const sentPassword = body.password
const lecturerStatus = body.lecturer
db.readNodesWithLabelsAndProperties('Person',{ email: sentEmail }, function (err, node) {
  if (err) {
    return console.log(err)
  }
  if (node.length > 0){
    // The user already exists
    callback({code:401,status:'failed',message:'Person already exsits with the name '+sentName,data:sentName})
  }
  else {
    // Insert new Person
    db.insertNode({
      name: sentName,
      email: sentEmail,
      skills: sentSkills,
      username: sentUsername,
      password: sentPassword,
      lecturer: lecturerStatus
  }, 'Person', function (err, node) {
    personNode = node
    if (err) {
      return console.log(err+1)
    }
    else {
     // I hate you for not working
     // The i = 0 variable is not accessible -> arraySkill[i]^.trim()
     // ERROR: cannot read property trim of undefined
      console.log("success")
      for (i = 0; i < arraySkills.length; i++){
        arraySkills = body.skills.split(',')
        db.cypherQuery("MATCH (s:Skill {name:'"+arraySkills[i].trim()+"'}) RETURN s", function(err, node){
          if (err){
            console.log("ERROR1")
            console.log(err)
          }
          else {
            console.log(arraySkills[0])
            if (node.data == '')
            {
              db.cypherQuery("CREATE (s:Skill {name:'"+arraySkills[i].trim()+"'}) RETURN s", function(err, node){
                if (err){
                  console.log("ERROR2")
                  console.log(err)
                }
                else {
                  console.log(node)
                   db.cypherQuery("MATCH (p:Person), (s:Skill) WHERE p.name = '"+sentName.trim()+"' AND s.name = '"+arraySkills[i].trim()+"' CREATE (p)-[r:knows]->(s) RETURN r", function(err, node){
                    if (err){
                      console.log("ERROR3")
                      console.log(err)
                    }
                    else { 
                      console.log(node)
                      console.log("Success")
                    }
                   })
                }
              })
            }
          }
        })   
      };
    }
      })
    // Output node data.
    callback({code:201,status:'success',message:'Person Added In '+sentName+' found...',data:node})
  }
})
}
 
     
    