fmRESTor.js

This simple web page demonstrates how you can use fmRESTor to interact with a FileMaker database via FileMaker Data API directly from an asynchronous JavaScript code. To test how fmRESTor works, simply host our demo database on your FileMaker Server, enter the access credentials below, and start testing the code samples. Please note that JavaScript's advantage is that it can be executed inside a web browser without having to host any intermediate code on a web server, but the disadvantage is that the whole code, including any secrets, are exposed to the user. If you are looking for a more secure environment, check out our PHP version of fmRESTor.

Access to your server

Please fill up your access credentials to your FileMaker database where is hosted fmRESTor demo database

Examples

Arrow
getProductInformation()
Code
let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.getProductInformation((requestSuccess) => {
        // call method "getProductInformation" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "getProductInformation" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
getDatabaseNames()
Code
let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.getDatabaseNames((requestSuccess) => {
        // call method "getDatabaseNames" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "getDatabaseNames" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
getScriptNames()
Code
let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.getScriptNames((requestSuccess) => {
        // call method "getScriptNames" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "getScriptNames" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
getLayoutNames()
Code
let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.getLayoutNames((requestSuccess) => {
        // call method "getLayoutNames" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "getLayoutNames" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
getLayoutMetadata()
Code
let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.getLayoutMetadata((requestSuccess) => {
        // call method "getLayoutMetadata" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "getLayoutMetadata" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
createRecord(parameters)
Code
// Example parameters
let parameters = {
  "fieldData": {
    "surname": "Create surname",
    "email": "email@email.com",
    "birthday": "1.1.2001",
    "personal_identification_number": "99",
    "address": "Street 24, City"
  }
}

let fm = new fmRESTorJS(YOUR_HOST,
    YOUR_DATABASE_NAME,
    YOUR_DATABASE_LAYOUT,
    YOUR_DATABASE_USER,
    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.createRecord(parameters, (requestSuccess) => {
        // call method "createRecord" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "createRecord" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
deleteRecord(recordId, parameters = null)
Code
// Example parameters
let id = recordId; // Replace "recordId" for number - Record ID
let parameters = {
  "script": "Log request",
  "script.param": "MyScriptParameters",
  "script.prerequest": "Log request",
  "script.prerequest.param": "MyScriptPreRequestParameters",
  "script.presort": "Log request",
  "script.presort.param": "MyScriptPreSortParameters"
}; // Optional

let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.deleteRecord(id, parameters, (requestSuccess) => {
        // call method "deleteRecord" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "deleteRecord" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
duplicateRecord(recordId, parameters = null)


Code
// Example parameters
let id = recordId; // Replace "recordId" for number - Record ID
let parameters = {
  "script": "Log request",
  "script.param": "MyScriptParameters",
  "script.prerequest": "Log request",
  "script.prerequest.param": "MyScriptPreRequestParameters",
  "script.presort": "Log request",
  "script.presort.param": "MyScriptPreSortParameters"
}; // Optional

let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.duplicateRecord(id, parameters, (requestSuccess) => {
        // call method "duplicateRecord" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "duplicateRecord" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
editRecord(recordId, parameters)


Code
// Example parameters
let id = recordId; // Replace "recordId" for number - Record ID
let parameters = {
  "fieldData": {
    "surname": "name was Surname",
    "email": "emailwasedited@email.com",
    "personal_identification_number": "1"
  }
}

let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.editRecord(id, parameters, (requestSuccess) => {
        // call method "editRecord" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "editRecord" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
getRecord(recordId, parameters = null)


Code
// Example parameters
let id = recordId; // Replace "recordId" for number - Record ID
let parameters = {
  "script": "Log request",
  "script.param": "MyScriptParameters",
  "script.prerequest": "Log request",
  "script.prerequest.param": "MyScriptPreRequestParameters",
  "script.presort": "Log request",
  "script.presort.param": "MyScriptPreSortParameters",
  "layout.response": "php_user",
  "_limit.USER_licence": 5,
  "_offset.USER_licence": 10
}; // Optional

let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.getRecord(id, parameters, (requestSuccess) => {
        // call method "getRecord" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "getRecord" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
getRecords(parameters = null)
Code
// Example parameters
let parameters = {
  "_limit": 5
}; // Optional

let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.getRecords(parameters, (requestSuccess) => {
        // call method "getRecords" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "getRecords" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
findRecords(parameters)
Code
// Example parameters
let parameters = {
  "query": [
    {
      "email": "==email@email.com",
      "birthday": "1.1.2001",
      "personal_identification_number": "99",
      "address": "Street 24, City",
      "omit": "true"
    }
  ]
}

let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.findRecords(parameters, (requestSuccess) => {
        // call method "findRecords" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "findRecords" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
setGlobalField(parameters)
Code
// Example parameters
let parameters = {
    "globalFields": {
        "USER::g_one": "Global g_one is set up",
        "USER::g_text": "Global g_text is set up"
    }
}

let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.setGlobalField(parameters, (requestSuccess) => {
        // call method "setGlobalField" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "setGlobalField" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
runScript(scriptName, parameters = null)
Code
// Example parameters
let scriptName = "Log request"
let parameters = {
  "script.param": "MyScriptParameters"
}

let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.runScript(scriptName, parameters, (requestSuccess) => {
        // call method "runScript" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "runScript" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
uploadFileToContainter(recordId, containerFieldName, containerFieldRepetition, file)
Code
// Example parameters
let id = recordId; // Replace "recordId" for number - Record ID
let containerFieldName = "photo" // Field name with container
let containerFieldRepetition = 1;
let file = document.getElementById('uploadFile').files[0]; // Replace 'uploadFile' for your ID - Input file

let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.login((loginSuccess) => {
    fm.uploadFileToContainter(id, containerFieldName, containerFieldRepetition, file, (requestSuccess) => {
        // call method "uploadFileToContainter" was successfull ( variable "requestSuccess" contains response )
    }, (requestError) => {
        // call method "uploadFileToContainter" failed ( variable "requestError" contains reason )
    });
}, (loginError) => {
    // login to database failed ( variable "loginError" contains reason )
});
Response
Arrow
logout()
Code
let fm = new fmRESTorJS(YOUR_HOST,
                    YOUR_DATABASE_NAME,
                    YOUR_DATABASE_LAYOUT,
                    YOUR_DATABASE_USER,
                    YOUR_DATABASE_PASSWORD);

fm.logout((requestSuccess) => {
    // call method "logout" was successfull ( variable "requestSuccess" contains response )
}, (requestError) => {
    // call method "logout" failed ( variable "requestError" contains reason )
});
Response