Can I use variables in Sync Function?

Thank all! I’ve figured out where my function was failing:

  1. use of doc.owner.includes is not supported by sync gateway javascript interpreter
  2. also the check doc.owner.indexOf("_") was throwing error when doc had no owner property

This is my final working function:

function (doc, oldDoc) {
  if (doc.owner !== undefined && doc.owner !== null) {
    // console.log("Task sync on doc.owner: " + doc.owner );
    if (Array.isArray(doc.owner)){
      var limit = doc.owner.length;
      var channels = [];
        // console.log("Limit is " + limit);
      for(var i = 0; i < limit; i++){
        // console.log("Testing element " + i + " value " + doc.owner[i]);
        channels.push(doc.owner[i]);
        var constainsTenant = (doc.owner[i].indexOf("_") > - 1);
          // console.log("Contains tenanat? " + constainsTenant);
        if (constainsTenant) {
          var tenant = doc.owner[i].substring(0,doc.owner[i].indexOf("_")).toLowerCase();
          // console.log("Tenant: " + tenant);
          var indexOfTenant = doc.owner.indexOf(tenant);
            // console.log("Tenant index: " + indexOfTenant);
          var tenantIsOwner = indexOfTenant == -1? false:true;
            // console.log("Tenant is owner? " + tenantIsOwner);
          if (!tenantIsOwner){
            // console.log("Pushing tentant " + tenant);
            channels.push(tenant);
            // console.log("Push tentant ");
            // console.log("owners: " + doc.owner);
          }
        }
      }
        // console.log("Add channels doc.owner: " + doc.owner );
      channel(channels);
    } else {
      if (doc.owner.indexOf("_") > - 1) {
        channel([doc.owner.substring(0,doc.owner.indexOf("_")).toLowerCase(), doc.owner]);
      } else {
        channel(doc.owner);
      }
    }
  } else {
    console.log("Tour sync skipped");
  }
}