如你所知,我是朋克大道 Apostrophe 团队的负责人。
您正在尝试方式,方式,方式太难了(:
在表单中将搜索字段命名为“自动完成”。
然后这样做:
var cursor = self.apos.docs.find(req, {})
.queryToFilters(req.query, 'public')
.perPage(self.perPage);
};
真的……就是这样。的全部目的queryToFilters
基本上就是这样做(不完全是,请参阅下面的安全说明,了解它的实际作用):
// DON'T DO THIS, JUST GIVES YOU AN IDEA OF WHAT'S GOING ON
_.each(req.query, function(val, key) {
cursor[key](val);
});
req.query
它调用与(嗯,几乎)的属性同名的游标方法。
当然那是不安全的,但要queryToFilters
特别确保有问题的方法是光标过滤器,它们被标记为safeFor: 'public'
并运行它们的清理程序。
autocomplete
是这样一个光标过滤器,所以...繁荣,我们完成了。
另外,我看到您正在self.apos.docs.find
直接使用。我假设您这样做是因为您希望从查询中返回所有类型的文档,在这种情况下,您正在做正确的事情。
如果不清楚,如果您甚至没有首先使用查询字符串,您可以autocomplete
直接使用您拥有的任何内容进行调用:
cursor.autocomplete('startofaword');
希望这有帮助!