gpt4 book ai didi

javascript - 切换到 Mongoose ,我不应该使用请求客户端吗?

转载 作者:可可西里 更新时间:2023-11-01 10:43:12 25 4
gpt4 key购买 nike

我正在大致围绕此处找到的演示创建一个 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 ,您绝对应该使用 native 驱动程序。

在您提到的 angular-app 项目中,mongolab API 一直代理到客户端代码:

https://github.com/angular-app/angular-app/blob/master/client/vendor/mongolab/mongolab-resource.js

我想这里的优点是它可以省去您必须编写自己的快速 API 层的麻烦,因为您的客户端实际上只是直接使用 mongolab 的 API 结构。但我认为这是以灵 active 和性能为代价的。

native 驱动程序还可以比 REST API 做更多的事情。除了更好的性能,如果您的查询返回大型数据集, native 驱动程序会为您提供类似 cursors 的东西和 streams .使用 REST 客户端,您的查询结果将被分页。

不幸的是,如果您构建的应用程序与 angular-app 的结构非常接近,那么迁移到 mongoose 可能不是一件容易的事,这将意味着客户端和服务器中的模型级代码发生变化。

然而,对于好的 mongoose+angular 示例,meanjs.org 有一个很好的引用实现,您可能会发现它很有用: https://github.com/meanjs/mean

它还有一个很棒的 yeoman 生成器,用于生成项目、模型、路线等: http://meanjs.org/generator.html

编辑:避免使用 REST 的另一个很好的理由是 mongodb 不提供开箱即用的 API,因此如果不托管本地 REST 服务,您将无法使用本地主机 mongodb 运行测试在两者之间。事实上,您只能针对提供此 API 的 mongo 提供程序运行您的应用程序,例如 mongolab,因此如果您想要尝试 mongodb 的 MMS 或切换到不同的提供程序(如 compose.io),您可能必须切换回无论如何 native 驱动程序。

关于javascript - 切换到 Mongoose ,我不应该使用请求客户端吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com