zu implementieren Wie Sie wissen, ich bin der Leiter des Apostrophe-Teams in der P'unk Avenue.
Sie versuchen, viel, viel, viel zu hart (:
Namen Geben Sie Ihr Suchfeld "Autovervollständigen" in Form
dies dann tun.
var cursor = self.apos.docs.find(req, {})
.queryToFilters(req.query, 'public')
.perPage(self.perPage);
};
Wirklich .. Der ganze Zweck von queryToFilters
ist im Grunde nur dies zu tun (nicht ganz, siehe unten für Sicherheitshinweis, was es wirklich tut):
// DON'T DO THIS, JUST GIVES YOU AN IDEA OF WHAT'S GOING ON
_.each(req.query, function(val, key) {
cursor[key](val);
});
Es ruft Cursor-Methoden mit dem gleichen Namen wie die Eigenschaften von req.query
(na ja, fast).
Natürlich wäre das unsicher, aber queryToFilters
stellt speziell sicher, dass die betreffenden Methoden Cursor-Filter sind, die als safeFor: 'public'
markiert sind und ihre Sanitizers zu laufen.
autocomplete
ist so ein Cursor-Filter, also ... Boom, wir sind fertig.
Auch ich sehe Sie arbeiten mit self.apos.docs.find
direkt. Ich nehme an, Sie tun das, weil Sie möchten, dass alle Arten von Dokumenten von der Abfrage zurückkommen, in welchem Fall Sie das Richtige tun.
Falls es nicht klar ist, wenn Sie noch nicht mit einer Abfragezeichenfolge an erster Stelle arbeiten, können Sie nur autocomplete
rufen direkt mit was auch immer es ist, Sie haben zu tun:
cursor.autocomplete('startofaword');
Hope this ist hilfreich!