【问题标题】:Switching to Mongoose, should I not use the request client?切换到猫鼬,我应该不使用请求客户端吗?
【发布时间】:2015-04-10 02:09:23
【问题描述】:

我正在创建一个基于此处找到的演示的 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)。

我不确定应用程序使用 request 而不是 mongod native 或 mongoose 是否有特定原因,但是为了开始使用 mongoose,我是否只需删除请求客户端并开始使用 mongoose?这会完全干扰代理吗?

谢谢!

【问题讨论】:

    标签: javascript angularjs node.js mongodb mongoose


    【解决方案1】:

    不,对于 mongoose,您绝对应该使用本机驱动程序。

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

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

    我想这里的好处是它可以省去你编写自己的 express API 层的麻烦,因为你的客户端实际上只是直接使用 mongolab 的 API 结构。但我认为这是以牺牲灵活性和性能为代价的。

    本机驱动程序还可以做比 REST API 更多的事情。除了更好的性能之外,如果您的查询返回大型数据集,本机驱动程序会为您提供 cursorsstreams 之类的内容。使用 REST 客户端,您的查询结果将被分页。

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

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

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

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

    【讨论】:

    • 现在我可以重写部分内容以使其按应有的方式工作还为时过早...您是否建议我在客户端刮擦 mongolab 资源和代理和服务器端的 REST API ......?还是使用 meanjs 从头开始​​?
    • Meanjs 似乎正是您想要的。
    • 好吧,客户端的 mongolab 资源似乎是 angular-app 代理服务器端其余 api 的唯一充分理由。我会说全部使用本地+猫鼬或全部使用休息+代理。
    猜你喜欢
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 2016-10-22
    • 2012-03-04
    • 1970-01-01
    相关资源
    最近更新 更多