Server storage

From NSB App Studio
Revision as of 12:12, 29 January 2019 by Ghenne (talk | contribs)
Jump to navigation Jump to search

Server Storage allows you to save data in (key, value) pairs on the server so it is available next time you run the program. An entry can be created by assigning to appStorage.setItem(key, value, callback), where key is specified by you. Data is retrieved a similar way. The information in serverStorage is only available to the app itself.

The value can be a string, number, array or object. There is no size limit on value, other than it be reasonable.

If your app does not have a live internet connection, the request will time out and an error message will be passed to callback.

Since the calls access information on a server, they are asynchronous (so your app does not look up while the call is being processed). When the call is complete, the function named in callback is called in your app. It passes two parameters: (error, data). If the call is successful, error is empty and your results are in data. If the call is unsuccessful, error is not empty and the error message is in data.message.

serverStorage is an alias for $volt.user.storage in the Volt API.

AppStudio comes with a Storage sample. Here's how to run it.

serverStorage.clear

This call clears all the items in your app's serverStorage.

The syntax of the function is:

serverStorage.clear(callback)

  • callback - function(error, data), required. The function in your app to call when the function is complete (or fails).
  butClear.onclick = function() {
    serverStorage.clear(done);
  };

  function done(error, data) {
    if (error) {
      if (data == undefined) {
        data = {
          message: "Network Error"
        };
      }
      NSB.MsgBox(data.message);
    } else {
      console.log("success");
    }
  }
  Function butClear_onclick()
    serverStorage.clear(done)
  End Function

  Function done(error, data)
    If error Then
      If data = undefined Then data = {message: "Network Error"}
      MsgBox data.message
    Else
      console.log("success")
    End If
  End Function

serverStorage.getItem

This call returns the value of the item with the specified key.

The syntax of the function is:

serverStorage.getItem(key, callback)

  • key - The name of the item. String.
  • callback - function(error, data), required. The function in your app to call when the function is complete (or fails).
  butGetItem.onclick = function() {
    serverStorage.getItem("SimpleString", getItemCallback);
  };

  function getItemCallback(error, data) {
    if (error) {
      if (data == undefined) {
        data = {
          message: "Network Error"
        };
      }
      alert(data.message);
    } else {
      alert(data);
    }
  }
  Function butGetItem_onclick()
    serverStorage.getItem("SimpleString", getItemCallback)
  End Function

  Function getItemCallback(error, data) 
    If error Then
      If data = undefined Then data = {message: "Network Error"}
      MsgBox data.message
    Else
      MsgBox data
    End If
  End Function

serverStorage.getAllItems

This call returns all the items in your app's serverStorage in an array of {key, value} objects.

The syntax of the function is:

serverStorage.getAllItems(callback)

  • callback - function(error, data), required. The function in your app to call when the function is complete (or fails).
  butGetAllItems.onclick = function() {
    serverStorage.getAllItems(getAllItemsCallback);
  };

  function getAllItemsCallback(error, data) {
    if (error) {
      if (data == undefined) {
        data = {
          message: "Network Error"
        };
      }
      NSB.MsgBox(data.message);
    } else {
      NSB.Print((false) + "<br>");
      for (key in data) {
        console.log(key, data[key]);
      }
    }
  }
  Function butGetAllItems_onclick()
    serverStorage.getAllItems(getAllItemsCallback)
  End Function

  Function getAllItemsCallback(error, data) 
    If error Then
      If data = undefined Then data = {message: "Network Error"}
      MsgBox data.message
    Else
      Print False
      For Each key in data
        console.log(key, data[key])
        k = [key, key][0]
        Print k & ": " & data[key].toString()
      Next
    End If
  End Function

serverStorage.removeItem

This call removes the item with a specified key.

The syntax of the function is:

serverStorage.removeItem(key, callback)

  • key - The name of the item. String.
  • callback - function(error, data), required. The function in your app to call when the function is complete (or fails).
  butRemoveItem.onclick = function() {
    serverStorage.removeItem("SimpleString", done);
  };

  function done(error, data) {
    if (error) {
      if (data == undefined) {
        data = {
          message: "Network Error"
        };
      }
      NSB.MsgBox(data.message);
    } else {
      console.log("success");
    }
  }
  Function butRemoveItem_onclick()
    serverStorage.removeItem("SimpleString", done)
  End Function

  Function done(error, data)
    If error Then
      If data = undefined Then data = {message: "Network Error"}
      MsgBox data.message
    Else
      console.log("success")
    End If
  End Function

serverStorage.setItem

This call adds a key, value pair to serverStorage.

The syntax of the function is:

serverStorage.setItem(key, value, callback)

  • key - The name of the item. String.
  • value - The name of the item. Can be string, number, array, object: any JavaScript data type.
  • callback - function(error, data), required. The function in your app to call when the function is complete (or fails).
  butSetItem.onclick = function() {
    serverStorage.setItem("SimpleString", "ABCD", done);
    serverStorage.setItem("Number", 123, done);
    serverStorage.setItem("Array", [1, 2, 3, 4], done);
    serverStorage.setItem("Object", {
      firstName: "Eric",
      lastName: "Cartman"
    }, done);
  };

  function done(error, data) {
    if (error) {
      if (data == undefined) {
        data = {
          message: "Network Error"
        };
      }
      NSB.MsgBox(data.message);
    } else {
      console.log("success");
    }
  }
  Function butSetItem_onclick()
    serverStorage.setItem("SimpleString", "ABCD", done)
    serverStorage.setItem("Number", 123, done)
    serverStorage.setItem("Array", [1, 2, 3, 4], done)
    serverStorage.setItem("Object", {firstName: "Eric", lastName: "Cartman"}, done)
  End Function

  Function done(error, data)
    If error Then
      If data = undefined Then data = {message: "Network Error"}
      MsgBox data.message
    Else
      console.log("success")
    End If
  End Function

Reference