在 Apache 或 IIS 中托管时将 Backbone.js 与 CouchDB 连接

Posted

技术标签:

【中文标题】在 Apache 或 IIS 中托管时将 Backbone.js 与 CouchDB 连接【英文标题】:Connecting Backbone.js with CouchDB when hosting in Apache or IIS 【发布时间】:2012-10-11 23:35:21 【问题描述】:

如果我要从 Apache Web 服务器或 IIS(而不是 node.js 或 couchApp)提供 ​​html 和 js 文件,我无法理解如何将 Backbone.js 与 CouchDB 干净地连接起来。

我应该使用backbone.js CouchDB 扩展来抽象请求吗?如果有,是哪个?

我应该将 Backbone.js 直接连接到 CouchDB RESTful 接口还是应该使用 一个中间 php 层(因为我熟悉 PHP,但不熟悉 Java 或其他服务器端设置)?如果有,是哪个?

处理阻止我与数据库交互的“同源策略”的最佳方法是什么?

基本上,我想要一种整洁的方式,使用backbone.js 到GET json 文档,从多个collections 按ID、ID 数组或所有ID。 同样从第二个管理网络界面,我需要能够通过id 更新、创建和删除

【问题讨论】:

【参考方案1】:

我认为您不需要任何扩展来使用 CouchDB。

您需要做的主要事情是在所有模型中将idAttribute 设置为_id

另外,我建议您在 CouchDB 和您的客户端之间放置一个中间层。除非您的用例非常简单,否则您很快就会想在将文档发送给客户之前对其进行转换。如果您想坚持使用 CouchDB,您可以使用 PHP、Express 并使用 CouchApp。

如果您想彻底绕过 SOP,请查看 CORS,它现在已被大多数浏览器支持。

我对 PHP 不熟悉,但我用 Express 和 felix-couchdb 来做这件事:

var couchdb = require('felix-couchdb'),
    client = couchdb.createClient(config.port, config.host),
    myDb = client.db('my_db');

// (... express boilerplate)
app.get('/resource/:resource_id', function (req, res) 
  myDb.getDoc(req.params.resource_id, function (err, doc) 
    if(err)
      return res.send(err);

    res.send(doc);
  );
);

【讨论】:

你能推荐任何基本上只需要安装和配置的库吗?特别是对于 PHP,但也适用于(节点/快递)?【参考方案2】:

我与https://cloudant.com/blog/backbone-and-cloudant/ 相处得非常好

【讨论】:

以上是关于在 Apache 或 IIS 中托管时将 Backbone.js 与 CouchDB 连接的主要内容,如果未能解决你的问题,请参考以下文章

iis 就像 apache 中的模拟

选择使用 IIS 进行 WCF 服务托管或使用 Windows 服务进行自托管

具有自托管或 IIS 选项的 WebAPI

我们啥时候应该在 IIS 中托管 WCF 服务,啥时候应该在 Windows 服务中托管?

Windows 2016 IIS 上 HTTP/2 的混合模式

IIS 7 托管模块无法获取 Content-Length 或发送的字节数