切换到猫鼬,我不应该使用请求客户端吗?
Switching to Mongoose, should I not use the request client?
我正在大致围绕此处找到的演示创建一个 MEAN 堆栈应用程序:https://github.com/angular-app/angular-app
我是 mongo 的新手,但想在服务器端使用 Mongoose,并注意到它当前使用请求客户端与数据库对话:
代码:https://github.com/angular-app/angular-app/blob/master/server/lib/mongo-strategy.js
var rest = require('request');
...
MongoDBStrategy.prototype.query = function(query, done) {
query.apiKey = this.apiKey;
var request = rest.get(this.baseUrl, { qs: query, json: {} }, function(err, response, body) {
done(err, body);
});
};
服务器还配置为代理调用 mongolab REST API(在此处找到:https://github.com/angular-app/angular-app/blob/master/server/lib/mongo-proxy.js)。
我不太确定应用程序使用请求而不是 mongod native 或 mongoose 是否有特定原因,但为了开始使用 mongoose,我是否只需删除请求客户端并开始使用 mongoose?这会完全干扰代理吗?
谢谢!
不,使用 mongoose 你绝对应该使用本机驱动程序。
在您提到的 angular-app 项目中,mongolab API 一直代理到客户端代码:
https://github.com/angular-app/angular-app/blob/master/client/vendor/mongolab/mongolab-resource.js
我想这里的优点是它省去了您必须编写自己的表达 API 层的麻烦,因为您的客户端实际上只是使用 mongolab 的 API 结构直接地。但我想这是以灵活性和性能为代价的。
本机驱动程序的功能也比 REST API 多得多。除了更好的性能,如果您的查询 returns 大数据集,本机驱动程序会为您提供 cursors and streams 之类的东西。使用 REST 客户端,您的查询结果将被分页。
不幸的是,如果您构建的应用程序非常接近 angular-app 的结构,那么迁移到 mongoose 可能不会是一个简单的交换,这意味着模型级代码客户端和服务器的变化。
为了好的 mongoose+angular 示例,但是,meanjs.org 有一个很好的参考实现,您可能会发现它很有用:
https://github.com/meanjs/mean
它还有一个很棒的 yeoman 生成器,用于生成项目、模型、路线等:
http://meanjs.org/generator.html
编辑: 避免使用 REST 的另一个很好的理由是 mongodb 没有开箱即用地提供这个 API,所以你不能' t 运行 使用本地主机 mongodb 进行测试,而无需在两者之间托管本地 REST 服务。事实上,你只能 运行 你的应用程序反对 mongo 提供此 API 的提供商,例如 mongolab 所以如果你想尝试 mongo db 的彩信或切换到不同的提供商,如 compose.io 你可能不得不切换回本机驱动程序。
我正在大致围绕此处找到的演示创建一个 MEAN 堆栈应用程序:https://github.com/angular-app/angular-app
我是 mongo 的新手,但想在服务器端使用 Mongoose,并注意到它当前使用请求客户端与数据库对话:
代码:https://github.com/angular-app/angular-app/blob/master/server/lib/mongo-strategy.js
var rest = require('request');
...
MongoDBStrategy.prototype.query = function(query, done) {
query.apiKey = this.apiKey;
var request = rest.get(this.baseUrl, { qs: query, json: {} }, function(err, response, body) {
done(err, body);
});
};
服务器还配置为代理调用 mongolab REST API(在此处找到:https://github.com/angular-app/angular-app/blob/master/server/lib/mongo-proxy.js)。
我不太确定应用程序使用请求而不是 mongod native 或 mongoose 是否有特定原因,但为了开始使用 mongoose,我是否只需删除请求客户端并开始使用 mongoose?这会完全干扰代理吗?
谢谢!
不,使用 mongoose 你绝对应该使用本机驱动程序。
在您提到的 angular-app 项目中,mongolab API 一直代理到客户端代码:
https://github.com/angular-app/angular-app/blob/master/client/vendor/mongolab/mongolab-resource.js
我想这里的优点是它省去了您必须编写自己的表达 API 层的麻烦,因为您的客户端实际上只是使用 mongolab 的 API 结构直接地。但我想这是以灵活性和性能为代价的。
本机驱动程序的功能也比 REST API 多得多。除了更好的性能,如果您的查询 returns 大数据集,本机驱动程序会为您提供 cursors and streams 之类的东西。使用 REST 客户端,您的查询结果将被分页。
不幸的是,如果您构建的应用程序非常接近 angular-app 的结构,那么迁移到 mongoose 可能不会是一个简单的交换,这意味着模型级代码客户端和服务器的变化。
为了好的 mongoose+angular 示例,但是,meanjs.org 有一个很好的参考实现,您可能会发现它很有用: https://github.com/meanjs/mean
它还有一个很棒的 yeoman 生成器,用于生成项目、模型、路线等: http://meanjs.org/generator.html
编辑: 避免使用 REST 的另一个很好的理由是 mongodb 没有开箱即用地提供这个 API,所以你不能' t 运行 使用本地主机 mongodb 进行测试,而无需在两者之间托管本地 REST 服务。事实上,你只能 运行 你的应用程序反对 mongo 提供此 API 的提供商,例如 mongolab 所以如果你想尝试 mongo db 的彩信或切换到不同的提供商,如 compose.io 你可能不得不切换回本机驱动程序。