Session: Querying: How to Stream Query Results
Query results can be streamed using the stream()
method from the advanced
session operations. The query can be issued using either a static index, or it can be a dynamic one where it will be handled by an auto index.
Syntax
session.advanced.stream(query, [statsCallback], [callback]);
Parameters |
|
|
query |
IDocumentQuery or IRawDocumentQuery |
Query to stream results for. |
statsCallback |
function |
callback returning information about the streaming query (amount of results, which index was queried, etc.) |
callback |
function |
returns a readable stream with query results (same as Return Value result below) |
Return Value |
|
Promise<Readable> |
A Promise resolving to readable stream with query results |
Example I - Using Static Index
const query = session
.query({ indexName: "Employees/ByFirstName" })
.whereEquals("FirstName", "Robert");
// stream() returns Node.js Readable
const stream = await session.advanced.stream(query);
stream.on("data", data => {
// Employee { FirstName: "Robert", LastName: "Smith" id: "employees/1-A" }
});
stream.on("error", err => {
// handle errors
});
stream.on("end", () => {
// stream ended
});
Example II - Dynamic Document Query
const query = session.advanced
.documentQuery(Employee)
.whereEquals("FirstName", "Robert");
let streamStats;
const stream = await session.advanced
.stream(query, stats => streamStats = stats);
stream.on("data", data => {
// Employee { FirstName: "Robert", LastName: "Smith" id: "employees/1-A" }
});
stream.on("error", err => {
// handle errors
});
stream.on("end", () => {
// stream ended
});
Example III - Dynamic Raw Query
const rawQuery = session.advanced
.rawQuery("from Employees where FirstName = 'Robert'");
const stream = session.advanced.stream(rawQuery);
stream.on("data", data => {
// Employee { FirstName: "Robert", LastName: "Smith" id: "employees/1-A" }
});
stream.on("error", err => {
// handle errors
});
stream.on("end", () => {
// stream ended
});