我一直在研究角度材质的自动完成功能,只要您将整个表格作为数组加载到控制器中,它就能很好地工作。
但如果该表有10,000条记录呢?你会怎么做?
我想在我的mongodb db.user表上搜索/自动完成,它看起来像这样:
{
"_id" : "this@that.com",
"name" : "This Thatson",
"phone" : "343-345-2234"
},
{
"_id" : "foo@bar.com",
"name" : "Foo Barron",
"phone" : "111-222-3333"
},
{
"_id" : "stack@overflow.com",
"name" : "Stack Overflowson",
"phone" : "333-222-111"
}
在我的角度页面中,我得到了一个字段:
<input type="text" ng-model="vm.searchText" ng-change="vm.search()">
然后在我的角度控制器中,我想在用户键入时自动搜索,例如3个字符,如foo
- 角度控制器应该调用我的nodejs控制器并获得结果。
我的nodejs控制器接收foo
然后接收什么.....?
我希望看一下_id
,name
和phone
,看看foo
是否在其中任何一个。
db.users.find(....)
你会怎么做?
更新:感谢Neil出色的解决方案,搜索工作正常,但我在设置查询方面遇到了问题......
if (received.user) {
user = { "_id": { "$regex": "^" + received.user, "$options": "i" } }
}
if (received.name) {
name = { "_id": { "$regex": "^" + received.name, "$options": "i" } }
}
if (received.phone) {
phone = { "_id": { "$regex": "^" + received.phone, "$options": "i" } }
}
usersTable.aggregate([
{
$match: {
"$or": [
user,
name,
phone
]
}
}, etc...