Node.js processing result set
After executing a query a response will be returned containing rows for a SELECT statement,
otherwise the returned payload will be unset.
The convenience function ToResultSet()`
is provided to help transform this response
into a ResultSet that’s easier to work with.
// Get the results from the execute query statement
// and separate into an array to print out the results
if (resultSet) {
const resultSet = response.getResultSet();
const rows = resultSet.getRowsList();
// This for loop gets 2 results
for ( let i = 0; i < 2; i++) {
var valueToPrint = "";
for ( let j = 0; j < 2; j++) {
var value = rows[i].getValuesList()[j].getString();
valueToPrint += value;
valueToPrint += " ";
}
console.log(valueToPrint);
}
}
Reading primitive values
Individual values from queries will be returned as a Value
object.
These objects have boolean hasX()
methods, where X is the possible type of a value.
There are corresponding getX()
methods on the Value
type that will return the value, if present.
If the value does not represent type X, calling getX()
will not return an error.
You’ll get undefined
or another falsy value based on the expected data type.
// Assume we know this is a string
const firstValueInRow = row.getValuesList()[0];
// This should resolve to true
const isString = firstValueInRow.hasString();
// This should resolve to the string value
const stringValue = firstValueInRow.getString();
// This should resolve to false
const isInt = firstValueInRow.hasInt();
// This should resolve to 0 - zero value for this data type
const intValue = firstValueInRow.getInt();
Reading CQL data types
The built-in toX()
methods for Values representing more complicated types
like UUIDs can be hard to work with.
This library exposes helper functions to translate a Value into a more easily used type:
-
toUUIDString
-
toCQLTime
Unlike the built-in toX()
methods, these helper functions will throw an error if the conversion fails.
Here’s an example of processing a UUID:
const insert = new Query();
insert.setCql("INSERT INTO ks1.tbl2 (id) VALUES (f066f76d-5e96-4b52-8d8a-0f51387df76b);");
await promisifiedClient.executeQuery(insert, authenticationMetadata);
// Read the data back out
const read = new Query();
read.setCql("SELECT id FROM ks1.tbl2");
const result = await promisifiedClient.executeQuery(read, authenticationMetadata);
const resultSet = result.getResultSet();
if (resultSet) {
const firstRow = resultSet.getRowsList()[0];
const idValue = firstRow.getValuesList()[0];
try {
const uuidAsString = toUUIDString(idValue);
console.log(`UUID: ${uuidAsString}`);
} catch (e) {
console.error(`Conversion of Value to UUID string failed: ${e}`);
}
}