import {AutoCompleteItem, AutoCompeleteTypes} from "../../../common/entities/AutoCompleteItem"; import {ISearchManager} from "../ISearchManager"; import {DirectoryModel} from "./entities/DirectoryModel"; import {PhotoModel} from "./entities/PhotoModel"; export class MongoSearchManager implements ISearchManager{ constructor(){ } autocomplete(text, cb:(error: any,result:Array) => void){ console.log("autocomplete: " + text); let items:Array = []; PhotoModel.find({name: { $regex: text, $options: "i" } }).limit(10).select('name').exec( (err,res:Array) =>{ if(err || !res){ return cb(err,null); } items = items.concat(this.encapsulateAutoComplete(res.map(r => r.name),AutoCompeleteTypes.image)); DirectoryModel.find({name: { $regex: text, $options: "i" } }).limit(10).select('name').exec( (err,res:Array) =>{ if(err || !res){ return cb(err,null); } items = items.concat(this.encapsulateAutoComplete(res.map(r => r.name),AutoCompeleteTypes.directory)); return cb(null,items); }); }); } private encapsulateAutoComplete(values:Array,type: AutoCompeleteTypes){ let res = []; values.forEach((value)=>{ res.push(new AutoCompleteItem(value,type)); }); return res; } }