The selected columns can be limited by using the FromAdapter#select method. It's variadic, and in its simplest form it can be passed an array of fully-qualified column names. A fully-qualified column name takes the form <table-alias>.<column-name>. For example, the bike_shops table is aliased bs in the proceeding example, so limiting the above query to bikeShopID and name is done in the following manner:
'use strict'; const MySQLDriver = require('node-data-mapper-mysql').MySQLDriver; const driver = new MySQLDriver(require('../bikeShopConOpts.json')); driver .initialize() .then(runQuery) .then(printResult) .catch(console.error) .finally(() => driver.end()); function runQuery(dataContext) { const query = dataContext // The table is aliased "bs" for convenience. .from('bike_shops bs') // Select only the ID and name of the shop. .select('bs.bikeShopID', 'bs.name'); // This is the query that will be executed. console.log('Query:'); console.log(query.toString(), '\n'); // Executing a query returns a promise. return query .execute(); } function printResult(result) { console.log('Result:'); console.log(result); }
It's worth mentioning that when limiting columns, the primary key is required to be one of the selected columns. If columns are selected from a table and the primary key is not one of the columns, then an exception will be raised.
This example prints the following output ($ node example/retrieve/limitColumns.js):
Query: SELECT `bs`.`bikeShopID` AS `bs.bikeShopID`, `bs`.`name` AS `bs.name` FROM `bike_shops` AS `bs` Result: { bike_shops: [ { bikeShopID: 1, name: 'Bob\'s Bikes' }, { bikeShopID: 2, name: 'Zephyr Cove Cruisers' }, { bikeShopID: 3, name: 'Cycle Works' } ] }