我的代码是
var search_element=Session.get("search_string");
var adc="/"+search_element+"*/";
console.log(adc);
return Polls_Coll.find({question:{$regex:adc}});
为什么它不起作用
如果我给
Polls_Coll.find({question:{$regex:/Best*/}});
在conslow它正在工作,如果我用值(search_element)替换正则表达式它不起作用。我认为它正在取代这样的
Polls_Coll.find({question:{$regex:"/Best*/"}});(with quotes "/Best*/")
这是主要问题吗?或者我做了什么愚蠢的错误?
答案 0 :(得分:11)
语法有两种:
Polls_Coll.find({question:/Best*/});
和
Polls_Coll.find({question:{$regex:"Best*"}});
你已经在每个元素中使用了元素,这可能就是为什么它不起作用了。有关mongodb文档的详细信息:http://docs.mongodb.org/manual/reference/operator/query/regex/
这两种形式在Meteor中运行良好,所以你不应该对它们有任何问题。
答案 1 :(得分:6)
我使用这种语法,它对我有用:
Polls_Coll.find({ name: {$regex: "adc", $options: '-i'} });
类似于:
SELECT * FROM Polls_Coll WHERE name LIKE '%adc%'
我还使用https://atmospherejs.com/meteor/reactive-var实现代码如下:
if (Meteor.isServer) {
Meteor.publish('customersSearch', function(searchValue){
if (searchValue) {
return Customers.find({ name: {$regex: searchValue, $options: '-i'} });
}
});
}
var searchQuery = new ReactiveVar();
Template.NewRO.onCreated(function(){
var self = this;
self.autorun(function() {
self.subscribe('vehicles');
self.subscribe('customersSearch', searchQuery.get());
});
});