<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.appstudio.dev/index.php?action=history&amp;feed=atom&amp;title=Server_storage</id>
	<title>Server storage - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.appstudio.dev/index.php?action=history&amp;feed=atom&amp;title=Server_storage"/>
	<link rel="alternate" type="text/html" href="https://wiki.appstudio.dev/index.php?title=Server_storage&amp;action=history"/>
	<updated>2026-07-26T07:09:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.appstudio.dev/index.php?title=Server_storage&amp;diff=11217&amp;oldid=prev</id>
		<title>Ghenne at 15:30, 25 February 2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.appstudio.dev/index.php?title=Server_storage&amp;diff=11217&amp;oldid=prev"/>
		<updated>2021-02-25T15:30:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:30, 25 February 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;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 &amp;#039;&amp;#039;callback&amp;#039;&amp;#039; is called in your app. It passes two parameters: (&amp;#039;&amp;#039;error&amp;#039;&amp;#039;, &amp;#039;&amp;#039;data&amp;#039;&amp;#039;). If the call is successful, &amp;#039;&amp;#039;error&amp;#039;&amp;#039; is empty and your results are in &amp;#039;&amp;#039;data&amp;#039;&amp;#039;. If the call is unsuccessful, &amp;#039;&amp;#039;error&amp;#039;&amp;#039; is not empty and the error message is in &amp;#039;&amp;#039;data&amp;#039;&amp;#039;.message.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;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 &amp;#039;&amp;#039;callback&amp;#039;&amp;#039; is called in your app. It passes two parameters: (&amp;#039;&amp;#039;error&amp;#039;&amp;#039;, &amp;#039;&amp;#039;data&amp;#039;&amp;#039;). If the call is successful, &amp;#039;&amp;#039;error&amp;#039;&amp;#039; is empty and your results are in &amp;#039;&amp;#039;data&amp;#039;&amp;#039;. If the call is unsuccessful, &amp;#039;&amp;#039;error&amp;#039;&amp;#039; is not empty and the error message is in &amp;#039;&amp;#039;data&amp;#039;&amp;#039;.message.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;serverStorage is an alias for $volt.user.storage in the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Volt &lt;/del&gt;API.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;serverStorage is an alias for $volt.user.storage in the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;VoltServer &lt;/ins&gt;API.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AppStudio comes with a Storage sample. Here&#039;s [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Volt &lt;/del&gt;Storage Sample|how to run it]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AppStudio comes with a Storage sample. Here&#039;s [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;VoltServer &lt;/ins&gt;Storage Sample|how to run it]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== serverStorage.clear ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== serverStorage.clear ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key nsbasic_mediawiki1348787612:diff:1.41:old-9765:rev-11217:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Ghenne</name></author>
	</entry>
	<entry>
		<id>https://wiki.appstudio.dev/index.php?title=Server_storage&amp;diff=9765&amp;oldid=prev</id>
		<title>Ghenne at 12:12, 29 January 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.appstudio.dev/index.php?title=Server_storage&amp;diff=9765&amp;oldid=prev"/>
		<updated>2019-01-29T12:12:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:12, 29 January 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l8&quot;&gt;Line 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;serverStorage is an alias for $volt.user.storage in the Volt API.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;serverStorage is an alias for $volt.user.storage in the Volt API.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;AppStudio comes with a Storage sample. Here&#039;s [[Volt Storage Sample|how to run it]].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== serverStorage.clear ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== serverStorage.clear ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key nsbasic_mediawiki1348787612:diff:1.41:old-9246:rev-9765:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Ghenne</name></author>
	</entry>
	<entry>
		<id>https://wiki.appstudio.dev/index.php?title=Server_storage&amp;diff=9246&amp;oldid=prev</id>
		<title>Sarah: Instructions for creating server storage</title>
		<link rel="alternate" type="text/html" href="https://wiki.appstudio.dev/index.php?title=Server_storage&amp;diff=9246&amp;oldid=prev"/>
		<updated>2017-05-27T01:02:54Z</updated>

		<summary type="html">&lt;p&gt;Instructions for creating server storage&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;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(&amp;#039;&amp;#039;key&amp;#039;&amp;#039;, &amp;#039;&amp;#039;value&amp;#039;&amp;#039;, &amp;#039;&amp;#039;callback&amp;#039;&amp;#039;), where &amp;#039;&amp;#039;key&amp;#039;&amp;#039; is specified by you. Data is retrieved a similar way. The information in serverStorage is only available to the app itself.&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;value&amp;#039;&amp;#039; can be a string, number, array or object. There is no size limit on value, other than it be reasonable.&lt;br /&gt;
&lt;br /&gt;
If your app does not have a live internet connection, the request will time out and an error message will be passed to callback.&lt;br /&gt;
&lt;br /&gt;
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 &amp;#039;&amp;#039;callback&amp;#039;&amp;#039; is called in your app. It passes two parameters: (&amp;#039;&amp;#039;error&amp;#039;&amp;#039;, &amp;#039;&amp;#039;data&amp;#039;&amp;#039;). If the call is successful, &amp;#039;&amp;#039;error&amp;#039;&amp;#039; is empty and your results are in &amp;#039;&amp;#039;data&amp;#039;&amp;#039;. If the call is unsuccessful, &amp;#039;&amp;#039;error&amp;#039;&amp;#039; is not empty and the error message is in &amp;#039;&amp;#039;data&amp;#039;&amp;#039;.message.&lt;br /&gt;
&lt;br /&gt;
serverStorage is an alias for $volt.user.storage in the Volt API.&lt;br /&gt;
&lt;br /&gt;
== serverStorage.clear ==&lt;br /&gt;
&lt;br /&gt;
This call clears all the items in your app&amp;#039;s serverStorage.&lt;br /&gt;
&lt;br /&gt;
The syntax of the function is:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;serverStorage.clear&amp;#039;&amp;#039;&amp;#039;(&amp;#039;&amp;#039;callback&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;callback&amp;#039;&amp;#039; - function(&amp;#039;&amp;#039;error&amp;#039;&amp;#039;, &amp;#039;&amp;#039;data&amp;#039;&amp;#039;), required. The function in your app to call when the function is complete (or fails).&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  butClear.onclick = function() {&lt;br /&gt;
    serverStorage.clear(done);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function done(error, data) {&lt;br /&gt;
    if (error) {&lt;br /&gt;
      if (data == undefined) {&lt;br /&gt;
        data = {&lt;br /&gt;
          message: &amp;quot;Network Error&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      NSB.MsgBox(data.message);&lt;br /&gt;
    } else {&lt;br /&gt;
      console.log(&amp;quot;success&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
  Function butClear_onclick()&lt;br /&gt;
    serverStorage.clear(done)&lt;br /&gt;
  End Function&lt;br /&gt;
&lt;br /&gt;
  Function done(error, data)&lt;br /&gt;
    If error Then&lt;br /&gt;
      If data = undefined Then data = {message: &amp;quot;Network Error&amp;quot;}&lt;br /&gt;
      MsgBox data.message&lt;br /&gt;
    Else&lt;br /&gt;
      console.log(&amp;quot;success&amp;quot;)&lt;br /&gt;
    End If&lt;br /&gt;
  End Function&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== serverStorage.getItem ==&lt;br /&gt;
&lt;br /&gt;
This call returns the value of the item with the specified &amp;#039;&amp;#039;key&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The syntax of the function is:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;serverStorage.getItem&amp;#039;&amp;#039;&amp;#039;(&amp;#039;&amp;#039;key&amp;#039;&amp;#039;, &amp;#039;&amp;#039;callback&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;key&amp;#039;&amp;#039; - The name of the item. String.&lt;br /&gt;
* &amp;#039;&amp;#039;callback&amp;#039;&amp;#039; - function(&amp;#039;&amp;#039;error&amp;#039;&amp;#039;, &amp;#039;&amp;#039;data&amp;#039;&amp;#039;), required. The function in your app to call when the function is complete (or fails).&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  butGetItem.onclick = function() {&lt;br /&gt;
    serverStorage.getItem(&amp;quot;SimpleString&amp;quot;, getItemCallback);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getItemCallback(error, data) {&lt;br /&gt;
    if (error) {&lt;br /&gt;
      if (data == undefined) {&lt;br /&gt;
        data = {&lt;br /&gt;
          message: &amp;quot;Network Error&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      alert(data.message);&lt;br /&gt;
    } else {&lt;br /&gt;
      alert(data);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
  Function butGetItem_onclick()&lt;br /&gt;
    serverStorage.getItem(&amp;quot;SimpleString&amp;quot;, getItemCallback)&lt;br /&gt;
  End Function&lt;br /&gt;
&lt;br /&gt;
  Function getItemCallback(error, data) &lt;br /&gt;
    If error Then&lt;br /&gt;
      If data = undefined Then data = {message: &amp;quot;Network Error&amp;quot;}&lt;br /&gt;
      MsgBox data.message&lt;br /&gt;
    Else&lt;br /&gt;
      MsgBox data&lt;br /&gt;
    End If&lt;br /&gt;
  End Function&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== serverStorage.getAllItems ==&lt;br /&gt;
&lt;br /&gt;
This call returns all the items in your app&amp;#039;s serverStorage in an array of {key, value} objects.&lt;br /&gt;
&lt;br /&gt;
The syntax of the function is:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;serverStorage.getAllItems&amp;#039;&amp;#039;&amp;#039;(&amp;#039;&amp;#039;callback&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;callback&amp;#039;&amp;#039; - function(&amp;#039;&amp;#039;error&amp;#039;&amp;#039;, &amp;#039;&amp;#039;data&amp;#039;&amp;#039;), required. The function in your app to call when the function is complete (or fails).&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  butGetAllItems.onclick = function() {&lt;br /&gt;
    serverStorage.getAllItems(getAllItemsCallback);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function getAllItemsCallback(error, data) {&lt;br /&gt;
    if (error) {&lt;br /&gt;
      if (data == undefined) {&lt;br /&gt;
        data = {&lt;br /&gt;
          message: &amp;quot;Network Error&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      NSB.MsgBox(data.message);&lt;br /&gt;
    } else {&lt;br /&gt;
      NSB.Print((false) + &amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
      for (key in data) {&lt;br /&gt;
        console.log(key, data[key]);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
  Function butGetAllItems_onclick()&lt;br /&gt;
    serverStorage.getAllItems(getAllItemsCallback)&lt;br /&gt;
  End Function&lt;br /&gt;
&lt;br /&gt;
  Function getAllItemsCallback(error, data) &lt;br /&gt;
    If error Then&lt;br /&gt;
      If data = undefined Then data = {message: &amp;quot;Network Error&amp;quot;}&lt;br /&gt;
      MsgBox data.message&lt;br /&gt;
    Else&lt;br /&gt;
      Print False&lt;br /&gt;
      For Each key in data&lt;br /&gt;
        console.log(key, data[key])&lt;br /&gt;
        k = [key, key][0]&lt;br /&gt;
        Print k &amp;amp; &amp;quot;: &amp;quot; &amp;amp; data[key].toString()&lt;br /&gt;
      Next&lt;br /&gt;
    End If&lt;br /&gt;
  End Function&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== serverStorage.removeItem ==&lt;br /&gt;
&lt;br /&gt;
This call removes the item with a specified key.&lt;br /&gt;
&lt;br /&gt;
The syntax of the function is:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;serverStorage.removeItem&amp;#039;&amp;#039;&amp;#039;(&amp;#039;&amp;#039;key&amp;#039;&amp;#039;, &amp;#039;&amp;#039;callback&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;key&amp;#039;&amp;#039; - The name of the item. String.&lt;br /&gt;
* &amp;#039;&amp;#039;callback&amp;#039;&amp;#039; - function(&amp;#039;&amp;#039;error&amp;#039;&amp;#039;, &amp;#039;&amp;#039;data&amp;#039;&amp;#039;), required. The function in your app to call when the function is complete (or fails).&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  butRemoveItem.onclick = function() {&lt;br /&gt;
    serverStorage.removeItem(&amp;quot;SimpleString&amp;quot;, done);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function done(error, data) {&lt;br /&gt;
    if (error) {&lt;br /&gt;
      if (data == undefined) {&lt;br /&gt;
        data = {&lt;br /&gt;
          message: &amp;quot;Network Error&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      NSB.MsgBox(data.message);&lt;br /&gt;
    } else {&lt;br /&gt;
      console.log(&amp;quot;success&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
  Function butRemoveItem_onclick()&lt;br /&gt;
    serverStorage.removeItem(&amp;quot;SimpleString&amp;quot;, done)&lt;br /&gt;
  End Function&lt;br /&gt;
&lt;br /&gt;
  Function done(error, data)&lt;br /&gt;
    If error Then&lt;br /&gt;
      If data = undefined Then data = {message: &amp;quot;Network Error&amp;quot;}&lt;br /&gt;
      MsgBox data.message&lt;br /&gt;
    Else&lt;br /&gt;
      console.log(&amp;quot;success&amp;quot;)&lt;br /&gt;
    End If&lt;br /&gt;
  End Function&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== serverStorage.setItem ==&lt;br /&gt;
&lt;br /&gt;
This call adds a key, value pair to serverStorage.&lt;br /&gt;
&lt;br /&gt;
The syntax of the function is:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;serverStorage.setItem&amp;#039;&amp;#039;&amp;#039;(&amp;#039;&amp;#039;key&amp;#039;&amp;#039;, &amp;#039;&amp;#039;value&amp;#039;&amp;#039;, &amp;#039;&amp;#039;callback&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;key&amp;#039;&amp;#039; - The name of the item. String.&lt;br /&gt;
* &amp;#039;&amp;#039;value&amp;#039;&amp;#039; - The name of the item. Can be string, number, array, object: any JavaScript data type.&lt;br /&gt;
* &amp;#039;&amp;#039;callback&amp;#039;&amp;#039; - function(&amp;#039;&amp;#039;error&amp;#039;&amp;#039;, &amp;#039;&amp;#039;data&amp;#039;&amp;#039;), required. The function in your app to call when the function is complete (or fails).&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  butSetItem.onclick = function() {&lt;br /&gt;
    serverStorage.setItem(&amp;quot;SimpleString&amp;quot;, &amp;quot;ABCD&amp;quot;, done);&lt;br /&gt;
    serverStorage.setItem(&amp;quot;Number&amp;quot;, 123, done);&lt;br /&gt;
    serverStorage.setItem(&amp;quot;Array&amp;quot;, [1, 2, 3, 4], done);&lt;br /&gt;
    serverStorage.setItem(&amp;quot;Object&amp;quot;, {&lt;br /&gt;
      firstName: &amp;quot;Eric&amp;quot;,&lt;br /&gt;
      lastName: &amp;quot;Cartman&amp;quot;&lt;br /&gt;
    }, done);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function done(error, data) {&lt;br /&gt;
    if (error) {&lt;br /&gt;
      if (data == undefined) {&lt;br /&gt;
        data = {&lt;br /&gt;
          message: &amp;quot;Network Error&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      NSB.MsgBox(data.message);&lt;br /&gt;
    } else {&lt;br /&gt;
      console.log(&amp;quot;success&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
  Function butSetItem_onclick()&lt;br /&gt;
    serverStorage.setItem(&amp;quot;SimpleString&amp;quot;, &amp;quot;ABCD&amp;quot;, done)&lt;br /&gt;
    serverStorage.setItem(&amp;quot;Number&amp;quot;, 123, done)&lt;br /&gt;
    serverStorage.setItem(&amp;quot;Array&amp;quot;, [1, 2, 3, 4], done)&lt;br /&gt;
    serverStorage.setItem(&amp;quot;Object&amp;quot;, {firstName: &amp;quot;Eric&amp;quot;, lastName: &amp;quot;Cartman&amp;quot;}, done)&lt;br /&gt;
  End Function&lt;br /&gt;
&lt;br /&gt;
  Function done(error, data)&lt;br /&gt;
    If error Then&lt;br /&gt;
      If data = undefined Then data = {message: &amp;quot;Network Error&amp;quot;}&lt;br /&gt;
      MsgBox data.message&lt;br /&gt;
    Else&lt;br /&gt;
      console.log(&amp;quot;success&amp;quot;)&lt;br /&gt;
    End If&lt;br /&gt;
  End Function&lt;br /&gt;
  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* JavaScript API: [https://docs.voltcloud.io/client/$volt.user.storage.html https://docs.voltcloud.io/client/$volt.user.storage.html]&lt;br /&gt;
* REST API: [https://docs.voltcloud.io/api/#storage-plug-in https://docs.voltcloud.io/api/#storage-plug-in]&lt;/div&gt;</summary>
		<author><name>Sarah</name></author>
	</entry>
</feed>