我在我的流星应用程序内实现人员列表。每个人都有一个lastName和firstName。我希望能够通过全名或部分来搜索。当然,搜索必须不区分大小写。大约有500人,所以我需要分页&我不能只在客户端过滤结果。
我的总体想法是在插入或更新人员时生成额外的字段fullName:
fullName: lastName.toLowerCase() + ' ' + firstName.toLowerCase(),
然后在find方法中使用它:
PersonsCollection.find({ fullName: {$regex : searchString}, ... })
我对Meteor, Mongo和后端很陌生。我花了一些时间研究,但还是很困惑。我的问题是:
- 是否有任何真正的理由反对我的实现除了它是有点丑陋的创建额外的字段?
- 在Meteor中是否有一种常规的方法来做到这一点?
通常创建一个额外的字段。
但是你可以尝试使用$或者:
PersonsCollection.find(
{
$or: [
{ firstName: new RegExp(searchString, 'i') },
{ lastName: new RegExp(searchString, 'i') }
]
}
);
别忘了为你的搜索字段创建索引。