new QuerySubscription(id, connection, query, settings)
Object that represents a query that has been or is currently being executed at the server. This constructor
is internal to LiveView and should not be invoked directly. QuerySubscriptions will be created and returned
as the result of calling
subscribe
.
Parameters:
Name | Type | Description |
---|---|---|
id |
Number | The unique identifier for this subscription. This value will be set by the API. |
connection |
LiveView.Connection | The connection on which the query is subscribed. |
query |
LiveView.Query | The query string that was issued to the server. |
settings |
Object | The settings that were used when subscribing to the query. This includes the callbacks and context provided for subscription events. |
Members
(static, readonly) Status :Object
Properties:
Name | Type | Description |
---|---|---|
STARTING |
Object | The query is in the process of starting up. Once the query has been acknowledged by the server as started and the necessary listeners have been linked, status will transition to ACTIVE |
ACTIVE |
Object | The query has started and is running |
UPDATING |
Object | The query is in the process of updating its parameters |
CLOSING |
Object | The query is in the process of closing. Once query closure has been acknowledged by the server and any necessary cleanup has been performed, status will transition to CLOSED |
CLOSED |
Object | The query is not active. |
ERROR |
Object | There was an error that occurred while running the query |
Type:
- Object
connection :LiveView.Connection
The connection on which the query is subscribed.
Type:
id :Number
The unique identifier for this subscription. This value will be set by the API.
Type:
- Number
isLvQuery :boolean
A flag indicating whether or not the query was issued against a native LiveView Table. Queries against tables
that do not use LiveView as their table data provider will have isLvQuery set to false.
Type:
- boolean
keyFields :Array.<String>
The query's key fields as an array of field names.
Type:
- Array.<String>
query :LiveView.Query
The query object that represents the query that was issued to the server.
Type:
settings :Object
The settings for the subscription (i.e. those that were passed when invoking subscribe)
Type:
- Object
status :LiveView.QuerySubscription.Status
The status object that represents the query that was issued to the server.
Type:
Methods
applyParameters(parameters, settingsopt) → {Promise.<Object>}
Applies the provided parameters to the query that is maintained by this QuerySubscription. The process
terminates the currently executing query and reinitializes it with the given parameters. This
QuerySubscription's fields will not change in the process (i.e. the query id, callbacks, etc.). Only the
contained Query's parameters will be modified. The same callbacks that were used for the initial query will
still be used for the re-parameterized query.
Example
//First connect to LiveView
var lvConnection, subscribedQuery;
LiveView.connect({url: '/lv/client'}).then(
function(connection){
//once connected, keep the reference to the connection and run queries
lvConnection = connection;
runQueries();
}
);
function runQueries(){
lvConnection.subscribe(
new LiveView.Query('SELECT sku, lastSoldPrice FROM ItemsSales WHERE sku = @itemName', {'@itemName':'\'Teddy Bear\''}),
{
onSnapshotStart: function(event){
console.log('Snapshot started for query ' + event.subscription.id);
console.log('The query schema is:');
console.log(event.schema);
},
onInsert: function(event){
console.log('Query ' + event.subscription.id + ' got new data.');
console.log('The new tuple is:');
console.log(event.tuple);
},
onUpdate: function(event){
console.log('Query ' + event.subscription.id + ' updated data for tuple ' + event.tuple.id);
console.log('The updated tuple data is:');
console.log(event.tuple.fieldMap);
},
onDelete: function(event){
console.log('Query ' + event.subscription.id + ' deleted tuple ' + event.tuple.id);
},
onSnapshotEnd: function(event){
console.log('Snapshot ended for query ' + event.subscription.id);
},
onError: function(error){
console.log('There was an error while running query ' + event.subscription.id);
console.log('ERROR:');
console.log(error);
}
}
)
.then(
function(result){
subscribedQuery = result.subscription;
//In normal applications, triggering of query update is likely to come from a user who clicked a
//button, selected something from a drop-down, etc.
//Here, we wait 2 seconds and then apply new parameters to the query
setTimeout(function(){updateQuery('\'Cell Phone\'')}, 2000);
},
function(error){
console.log('Something went wrong: ' + error.message);
}
);
}
function updateQuery(itemName){
if(!subscribedQuery){ return; } //query isn't ready
console.log('================ Applying Parameters ===============');
subscribedQuery.applyParameters({'@itemName':itemName});
}
Parameters:
Name | Type | Attributes | Description | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
parameters |
Object | Map of parameter token to parameter value to be applied to the query. Users are essentially free to define the token used to identify a parameter as they wish. The query string is generated using regular expression substitution, so avoidance of regular expression special characters is recommended as it will likely cause unexpected behavior. The '@' character as a parameter prefix works well (e.g. {'@priceMin':100, '@lastUpdated':1415230518223}). | |||||||||||||||||
settings |
Object |
<optional> |
Object specifying additional settings for the applyParameters function
Properties
|
Returns:
-- Promise representing the result of the applyParameters function. On success, the promise resolution handler function will be passed an object with field: subscription. The subscription field is this query subscription (i.e. the one whose parameters were applied). If the applying parameters fails, the promise will be rejected and the rejection handler will be passed an
Error
object containing details about what went wrong.
- Type
- Promise.<Object>
close(settingsopt) → {Promise.<Object>}
Closes the query maintained by this QuerySubscription.
Parameters:
Name | Type | Attributes | Description | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
settings |
Object |
<optional> |
Object specifying additional, optional settings for the close function
Properties
|
Returns:
-- Promise representing the result of the close function. On success, the promise resolution handler function will be passed an object with field: subscription. The subscription field is the
QuerySubscription
that successfully closed. If there is an error, the promise will be rejected and the rejection handler function will be passed an Error
object containing details about what went wrong.
- Type
- Promise.<Object>