[英]Search API between client and server in mongodb
我在nodejs中有我的服务器,在angularjs中有我的客户端,mongodb(mongoose)作为数据库。 我希望我的客户能够使用所有正常条件进行搜索查询,例如将几个字段固定为某些值,将搜索字符串包含在几个字段中,等等。
查询可以
(value of field A can be 'x' or 'y') and
(value of field B can range between dates P and Q) and
(string s contained in fields C or D or E) few more
我可以遵循任何npm插件或标准化来丰富我的服务器端API,也可以在查询时直接放置表达式,而无需通过多次查询(具有大量代码)进行map reduce。
是的,有几个。 我只知道可与Mongoose一起使用的驱动程序,因此,如果您使用其他驱动程序,则可能需要对其进行一些修改。
对于每种方法,您都需要确定哪些要在本地过滤,哪些要由服务器处理。 过滤的位置应主要取决于您拥有多少数据。 就个人而言,放弃对我最大的集合的本地过滤更有意义,而仅依靠MongoDB来处理工作负载。
连接猫鼬和Angular等
如果我们正在使用Angular和node.js等现代Javascript框架构建基于模型的SPA应用程序,那么Angoose项目的原始动机就是消除双重模型声明(服务器和客户端)。 通过使用Javascript的前端和后端,Angoose允许在客户端使用服务器端模型和服务,就像它们驻留在客户端一样。
Angoose依赖于以下框架,并假定您基本熟悉它们:
- 猫鼬
- 表达
- 角度的(可选,对于非角度应用,需要jQuery)
Mongoose插件,它采用一组URL参数并构造一个查询以供搜索API使用。 另外,有史以来最差的项目名称。
如果您使用Mongoose帮助提供API调用的结果,则可能会习惯于处理以下调用:
/monsters?color=purple&eats_humans=true
mongoose-api-query为您处理一些繁琐的工作。 传入普通对象(例如req.query),查询条件将根据您的Mongoose模式强制转换为适当的类型。 例如,如果您在架构中定义了布尔值,我们会将eats_humans = true转换为布尔值以进行搜索。
它还会添加大量其他搜索运算符,例如小于,大于,不等于,接近(对于地理搜索),内部和全部。 您可以在下面找到完整列表。
搜索字符串时,默认情况下会进行不区分大小写的部分匹配。 (这不是MongoDB中的默认值。)
通过Mongoose / Node-Express / Angular.js之间的REST接口轻松链接模型
通过AngularJS创建,读取,更新,删除MongoDB集合。
它用 :
- 猫鼬访问Mongodb
- 快速路由
- AngularJS(使用$ resource方法)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.