如何在Meteor.js中创建动态查找文档的功能?

时间:2015-03-23 03:12:40

标签: meteor

我想在Meteor.js中为动态查找文档创建一个函数。 例如,我有Students收藏,我想通过name, gender, phone...找到学生。如果提供了名称,我想找到名称like提供的名称,如果提供gender,我想查找提供的性别等同于提供phone的性别我想找到提供的手机之类的手机,如果没有提供namegenderphone,我想查找所有姓名和所有性别以及所有手机。  在SQL Server中,我将创建存储过程,如下所示:

Create PROCEDURE [dbo].[pG_Student]    
   @pName nvarchar(250)=null,
   @pGender nvarchar(50)=null,
   @pPhone nvarchar(100)=null
AS
BEGIN
    SELECT * FROM [dbo].[StudentView]
    WHERE (LOWER(Name) like '%'+LOWER(@pName)+'%'  or @pName is null)
    and (Gender=@pGender or @pGender is null) 
    and (LOWER([Phone]) like '%'+LOWER(@pPhone)+'%'  or @pPhone is null) 
END

使用此存储过程,我可以使用C#调用。

Meteor.js怎么样?

1 个答案:

答案 0 :(得分:0)

您只需构建标准即可。 e.g:

var criteria = {};
if (typeof pName != 'undefined') criteria.pName = pName.toLowerCase();
if (typeof pGender != 'undefined') criteria.pGender = pGender;
if (typeof pPhone != 'undefined') criteria.pPhone = pPhone.toLowerCase();

var cursor = Students.find(criteria);

请注意,在上面的代码中我假设数据库中的数据已经是小写的。这允许最有效的搜索。如果没有,则必须使用正则表达式:

MongoDB: Is it possible to make a case-insensitive query?

但是,由于Mongo不能为我们提供索引,因此不建议这样做。如有必要,您可以创建小写的可搜索字段和混合大小写显示字段。