UNPKG

keystone

Version:

Web Application Framework and Admin GUI / Content Management System built on Express.js and Mongoose

36 lines (30 loc) 1.18 kB
/** * Returns either false if the list has no search fields defined or a structure * describing the text index that should exist. */ function buildSearchTextIndex () { var idxDef = {}; for (var i = 0; i < this.searchFields.length; i++) { var sf = this.searchFields[i]; if (!sf.path || !sf.field) continue; // TODO: Allow fields to define their own `getTextIndex` method, so that // each type can define the right options for their schema. This is unlikely // to behave as expected for fields that aren't simple strings or names // until that has been done. Should error if the field type doesn't support // text indexing, as the list has been misconfigured. // Does the field have a single path or does it use nested values (like 'name') if (sf.field.paths) { var nFields = sf.field.paths; var nKeys = Object.keys(nFields); for (var n = 0; n < nKeys.length; n++) { idxDef[nFields[nKeys[n]]] = 'text'; } } else if (sf.field.path) { idxDef[sf.field.path] = 'text'; } } // debug('text index for \'' + this.key + '\':', idxDef); return Object.keys(idxDef).length > 0 ? idxDef : false; } module.exports = buildSearchTextIndex;