Meteor.users 中的用户名全文搜索
Username full text search in Meteor.users
我正在尝试通过用户名搜索 meteor.users
集合。
我已按照所有详细步骤进行操作 here,但似乎无法正常工作 meteor.users
。
这是我的代码:
服务器启动时:
Meteor.startup(function(){
Meteor.users._ensureIndex({
"username":"text",
});
});
在我的发布函数中:
Meteor.publish("Meteor.users.userSearch",function(searchVal){
if(!searchVal){
return Meteor.users.find({});
}
return Meteor.users.find({$text:{$search:searchVal}});
});
在客户端:
Template.foo.helpers({
users(){
var searchValue = Session.get('searchVal');
Meteor.subscribe('Meteor.users.userSearch',searchValue);
return Meteor.users.find({});
}
});
谁能帮我弄清楚上面的问题是什么?
没有searchValue
时,正常工作,返回所有用户。只要有任何搜索值,就不会返回任何用户。
我也直接在 mongodb 控制台 db.users.find({$text:{$search:"some_test"}})
中尝试过,同样没有返回任何集合对象。
确保指数:
自版本 3.0.0 起已弃用:db.collection.ensureIndex() 现在是 db.collection.createIndex( ).
_ensureIndex 似乎是一个孤儿。
Meteor.startup(function(){
Meteor.users.createIndex({
"username":"text"
});
});
如果您只想搜索一个字段的值(在本例中为 username
),则无需进行全文搜索。在这种情况下,使用带有正则表达式值作为搜索值的普通 find
命令更好:
Meteor.users.find({
username: new RegExp('user1', 'gi'),
});
我正在尝试通过用户名搜索 meteor.users
集合。
我已按照所有详细步骤进行操作 here,但似乎无法正常工作 meteor.users
。
这是我的代码:
服务器启动时:
Meteor.startup(function(){
Meteor.users._ensureIndex({
"username":"text",
});
});
在我的发布函数中:
Meteor.publish("Meteor.users.userSearch",function(searchVal){
if(!searchVal){
return Meteor.users.find({});
}
return Meteor.users.find({$text:{$search:searchVal}});
});
在客户端:
Template.foo.helpers({
users(){
var searchValue = Session.get('searchVal');
Meteor.subscribe('Meteor.users.userSearch',searchValue);
return Meteor.users.find({});
}
});
谁能帮我弄清楚上面的问题是什么?
没有searchValue
时,正常工作,返回所有用户。只要有任何搜索值,就不会返回任何用户。
我也直接在 mongodb 控制台 db.users.find({$text:{$search:"some_test"}})
中尝试过,同样没有返回任何集合对象。
确保指数: 自版本 3.0.0 起已弃用:db.collection.ensureIndex() 现在是 db.collection.createIndex( ).
_ensureIndex 似乎是一个孤儿。
Meteor.startup(function(){
Meteor.users.createIndex({
"username":"text"
});
});
如果您只想搜索一个字段的值(在本例中为 username
),则无需进行全文搜索。在这种情况下,使用带有正则表达式值作为搜索值的普通 find
命令更好:
Meteor.users.find({
username: new RegExp('user1', 'gi'),
});