|
|
(15 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| '''Starting with AppStudio 6, ServerStorage is no longer supported.''' | | serverStorage.clear(''callback'')<br> |
| | serverStorage.getItem(''key'', ''callback'')<br> |
| | serverStorage.getAllItems(''key'', ''callback'')<br> |
| | serverStorage.removeItem(''key'', ''callback'')<br> |
| | serverStorage.setItem(''key'', ''value'', ''callback'') |
|
| |
|
| serverStorage(''string'' | ''variable'')
| | == Description == |
|
| |
|
| == Description ==
| | ServerStorage 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 serverStorage.setItem(''key'', ''value''), where ''key'' is chosen by you. Data is retrieved a similar way. The information in serverStorage is only available to the app itself. |
|
| |
|
| ServerStorage allows you to save string data on the server so it is available next time you run the program. An entry can be created by assigning to serverStorage.setItem(''variableName'', ''value''), where ''variableName'' is chosen by you. Data is retrieved a similar way.
| | ''value'' can be a string, number, array or object. There is no size limit on ''value'', other than it be reasonable. |
|
| |
|
| Normally, data is saved in a namespace using the app's id. However, it is possible to set the namespace to the name of another app's id, allowing the two apps to share data.
| | This feature is only available if your app is hosted on VoltServer. |
|
| |
|
| ServerStorage is insecure: there is currently no protection against other apps reading or changing the data. If two apps are using the same namespace, there is no collision or locking logic: it is possible for one user to erase another user's update.
| | If your app does not have a live internet connection, the request will time out and an error message will be passed to ''callback''. |
|
| |
|
| This feature requires server side software. The AppStudio Server has it. If you want to implement it on your own server, [https://github.com/artlogic/server-storage/blob/master/README.md the instructions are here].
| | 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. |
|
| |
|
| To turn on this feature, select ServerStorage on the [[Toolbox|Toolbox]] panel in Project Properties:
| | serverStorage is an alias for $volt.user.storage in the [https://docs.voltcloud.io/api/ VoltServer API]. |
| [[File:Serverstorage.png]]
| |
|
| |
|
| == Properties and Methods == | | == Properties and Methods == |
Line 20: |
Line 23: |
| {| class="wikitable" | | {| class="wikitable" |
| |- | | |- |
| | clear() || Clear all entries in the current namespace. | | | clear(''callback'') || Clear all entries for the app. |
| |-
| |
| | deleteItem(''key'') || Deletes item ''key''.
| |
| |-
| |
| | getItem(''key'') || Get the item which is saved under ''key''. String.
| |
| |- | | |- |
| | key(''n'') || Get the ''n''th item in the namespace. | | | getItem(''key'', ''callback'') || Get the item which is saved under ''key''. String. |
| |- | | |- |
| | length || The number of items in the current namespace. | | | getAllItems(''callback'') || Gets all the items for the app, as an array. Each element is a key,value pair. |
| |- | | |- |
| | namespace || The group used by all serverStorage methods. Defaults to app ID. | | | removeItem(''key'', ''callback'') || Deletes item ''key''. |
| |- | | |- |
| | setItem(''key'', ''value'') || Sets item ''key'' to ''value''. Creates item if it does not exist. | | | setItem(''key'', ''value'', ''callback'') || Sets item ''key'' to ''value''. Creates item if it does not exist. |
| |} | | |} |
|
| |
|
| == Example - BASIC == | | == Example == |
| | |
| | <tabber> |
| | JavaScript= |
| | <syntaxhighlight lang="JavaScript"> |
| | butClear.onclick = function() { |
| | serverStorage.clear(done); |
| | }; |
| | |
| | butGetAllItems.onclick = function() { |
| | serverStorage.getAllItems(getAllItemsCallback); |
| | }; |
| | |
| | butGetItem.onclick = function() { |
| | serverStorage.getItem("SimpleString", getItemCallback); |
| | }; |
| | |
| | butRemoveItem.onclick = function() { |
| | serverStorage.removeItem("SimpleString", done); |
| | }; |
| | |
| | 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 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]); |
| | } |
| | } |
| | } |
|
| |
|
| <pre> | | function getItemCallback(error, data) { |
| Sub Main()
| | if (error) { |
| NameSpace.text = serverStorage.namespace | | if (data == undefined) { |
| End Sub | | data = { |
| | message: "Network Error" |
| | }; |
| | } |
| | NSB.MsgBox(data.message); |
| | } else { |
| | NSB.MsgBox(data); |
| | } |
| | }</syntaxhighlight> |
| | |-| |
| | BASIC= |
| | <syntaxhighlight lang="vb.net"> |
| | Function butClear_onclick() |
| | serverStorage.clear(done) |
| | End Function |
|
| |
|
| Function Button1_onclick() | | Function butGetAllItems_onclick() |
| t=SysInfo(10) | | serverStorage.getAllItems(getAllItemsCallback) |
| For i = 1 To 10
| |
| serverStorage.setItem("item" & i, i)
| |
| Next
| |
| MsgBox "Write 10 items into serverStorage(secs): " & (SysInfo(10)-t)/1000
| |
| End Function | | End Function |
|
| |
|
| Function Button2_onclick() | | Function butGetItem_onclick() |
| NSB.Print(False) | | serverStorage.getItem("SimpleString", getItemCallback) |
| For i=0 To serverStorage.length-1
| |
| key = serverStorage.key(i)
| |
| Print key, serverStorage.getItem(key)
| |
| Next
| |
| End Function | | End Function |
|
| |
|
| Function Button3_onclick() | | Function butRemoveItem_onclick() |
| serverStorage.clear() | | serverStorage.removeItem("SimpleString", done) |
| End Function | | End Function |
| </pre>
| |
|
| |
|
| == Example - JavaScript ==
| | Function butSetItem_onclick() |
| <pre>
| | serverStorage.setItem("SimpleString", "ABCD", done) |
| function Main() {
| | serverStorage.setItem("Number", 123, done) |
| NameSpace.text = serverStorage.namespace; | | serverStorage.setItem("Array", [1, 2, 3, 4], done) |
| }
| | serverStorage.setItem("Object", {firstName: "Eric", lastName: "Cartman"}, done) |
| | End Function |
|
| |
|
| Button1.onclick = function() {
| | Function done(error, data) |
| t=SysInfo(10); | | If error Then |
| for (i = 1; i <= 10; i ++) {
| | If data = undefined Then data = {message: "Network Error"} |
| serverStorage.setItem("item" + i, i); | | MsgBox data.message |
| } | | Else |
| alert("Write 10 items into serverStorage(secs): " + (SysInfo(10)-t)/1000);
| | console.log("success") |
| }
| | End If |
| | End Function |
|
| |
|
| Button2.onclick = function() {
| | Function getAllItemsCallback(error, data) |
| NSB.Print(False); | | If error Then |
| for (i=0; i <= serverStorage.length-1; i++) {
| | If data = undefined Then data = {message: "Network Error"} |
| key = serverStorage.key(i); | | MsgBox data.message |
| NSB.Print((key+ " " + serverStorage.getItem(key)) + "<br>"); | | 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 |
|
| |
|
| Button3.onclick = function() {
| | Function getItemCallback(error, data) |
| serverStorage.clear(); | | If error Then |
| }
| | If data = undefined Then data = {message: "Network Error"} |
| </pre> | | MsgBox data.message |
| | Else |
| | MsgBox data |
| | End If |
| | End Function |
| | </syntaxhighlight> |
| | </tabber> |
|
| |
|
| == Output == | | == Output == |
Line 96: |
Line 172: |
| == Related Items == | | == Related Items == |
|
| |
|
| [[localstorage|LocalStorage]], [[sessionstorage|SessionStorage]], [[sql|SQL]] | | [[AppStorage|AppStorage]], [[localstorage|LocalStorage]], [[sessionstorage|SessionStorage]], [[sql|SQL]] |
|
| |
|
| [[Category:Language Reference]] | | [[Category:Language Reference]] |
|
| |
|
| [[Category:Miscellaneous]] | | [[Category:Miscellaneous]] |
serverStorage.clear(callback)
serverStorage.getItem(key, callback)
serverStorage.getAllItems(key, callback)
serverStorage.removeItem(key, callback)
serverStorage.setItem(key, value, callback)
Description
ServerStorage 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 serverStorage.setItem(key, value), where key is chosen by you. Data is retrieved a similar way. The information in serverStorage is only available to the app itself.
value can be a string, number, array or object. There is no size limit on value, other than it be reasonable.
This feature is only available if your app is hosted on VoltServer.
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 VoltServer API.
Properties and Methods
clear(callback) |
Clear all entries for the app.
|
getItem(key, callback) |
Get the item which is saved under key. String.
|
getAllItems(callback) |
Gets all the items for the app, as an array. Each element is a key,value pair.
|
removeItem(key, callback) |
Deletes item key.
|
setItem(key, value, callback) |
Sets item key to value. Creates item if it does not exist.
|
Example
butClear.onclick = function() {
serverStorage.clear(done);
};
butGetAllItems.onclick = function() {
serverStorage.getAllItems(getAllItemsCallback);
};
butGetItem.onclick = function() {
serverStorage.getItem("SimpleString", getItemCallback);
};
butRemoveItem.onclick = function() {
serverStorage.removeItem("SimpleString", done);
};
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 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 getItemCallback(error, data) {
if (error) {
if (data == undefined) {
data = {
message: "Network Error"
};
}
NSB.MsgBox(data.message);
} else {
NSB.MsgBox(data);
}
}
Function butClear_onclick()
serverStorage.clear(done)
End Function
Function butGetAllItems_onclick()
serverStorage.getAllItems(getAllItemsCallback)
End Function
Function butGetItem_onclick()
serverStorage.getItem("SimpleString", getItemCallback)
End Function
Function butRemoveItem_onclick()
serverStorage.removeItem("SimpleString", done)
End Function
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
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
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
Output
(see serverStorage sample)
Related Items
AppStorage, LocalStorage, SessionStorage, SQL