我正在使用Meteor和aldeed:tabular包来显示“联系人”集合的表格。我在表格上方设置了从A到Z的按钮,这样我就可以选择一个字母,只列出'firstName'以所选字母开头的联系人。我正在使用表格的'selector'属性。
{{> tabular table=ContactsTable.Contacts id="contactsTableID" selector=selector class="table table-bordered table-condensed table-striped"}}
当我点击一个字母时,我将一个值存储到这样的会话变量中......
contacts.html
<button type="button" class="btn btn-default selectLetterA">A</button>
contacts.js
Template.contacts.events = {
'click .selectLetterA': function(e) {
e.preventDefault();
Session.set('selectedLetter','a');
}
};
Template.contacts.helpers({
selector: function (){
if (Session.get('selectedLetter') != '') {
if (Session.get('selectedLetter') == 'all') {return {createdBy: Meteor.userId()}} else if
(Session.get('selectedLetter') == 'a') {return {firstName: {'$regex': /^a/i }}} else if
(Session.get('selectedLetter') == 'b') {return {firstName: {'$regex': /^b/i }}} else if
...
}
} else {
return {createdBy: Meteor.userId()}; //If the selectedLetter is blank, return all contacts created by current user.
}
}
});
使用上面的语法,当我点击字母时,我在服务器上收到以下错误...
来自sub tabular_getInfo id的异常hyD5bp2r6F2YuzoMa MongoError:无法规范化查询:BadValue $ regex必须是字符串
因此,如果我尝试将语法更改为此,则错误消失,但单击该字母将不会返回任何内容。
return {'firstName': {'$regex': '/^a/gi'}};
我也尝试过以下语法......
return {firstName:/^a/gi};
return {firstName: {'$regex': '/^a/', '$options': 'i'}}
Apparently第二个应该可以工作,但不适合我。
我还验证了在控制台中使用它肯定会返回数据(我看到返回了5个文件)......
Contacts.find( { "firstName": { "$regex": /^a/gi } } ).fetch()
由于
答案 0 :(得分:0)
这个问题在Meteor论坛上得到了回答...... https://forums.meteor.com/t/regex-not-working-for-selector-of-aldeed-tabular/17244/2?u=serks
保持正则表达式是一个没有正斜杠的字符串,所以类似下面的东西应该有效:
return {
firstName: {
$regex: '^a',
$options: 'i'
}
}