如何为CRUD数据库设置EXTJS4存储?

如何为CRUD数据库设置EXTJS4存储?,extjs,couchdb,extjs4,store,crud,Extjs,Couchdb,Extjs4,Store,Crud,如何校准Extjs 4存储区,以便从/到couchDb的简单CRUD 上一次Austin Sencha会议的演示项目展示了Ext 4与Coach和MongoDB的连接: 具体来说,这可能会帮助您入门。我想指出,要在演示中完全实现CRUD功能,需要进行一些修改。CouchDB要求您为任何更新/删除操作追加修订。这还可能导致Ext REST代理中的字段属性出现一些问题。有一个名为mvcCouch的项目值得一看。该项目引用了一个插件,该插件应该有助于对CouchDB执行完整的CRUD操作。您将在Ex

如何校准Extjs 4存储区,以便从/到couchDb的简单CRUD

上一次Austin Sencha会议的演示项目展示了Ext 4与Coach和MongoDB的连接:


具体来说,这可能会帮助您入门。

我想指出,要在演示中完全实现CRUD功能,需要进行一些修改。CouchDB要求您为任何更新/删除操作追加修订。这还可能导致Ext REST代理中的字段属性出现一些问题。有一个名为mvcCouch的项目值得一看。该项目引用了一个插件,该插件应该有助于对CouchDB执行完整的CRUD操作。

您将在ExtJS 4的REST代理中发现一些细微之处,它们可能会降低您的速度。总结了主要内容:

  • 在模型类中,必须定义硬编码的“id”属性或使用“idProperty”将一列指定为“id”

  • 服务器端代码需要将整个更新的记录返回到浏览器。CouchDB通常只返回一个_id和_rev,因此您必须找到一种方法自己获取整个文档

  • 请注意,“数据”中记录的格式必须是JSON格式

  • 请确保在模型类中至少实现一个验证器,因为在ExtJS源代码AbstractStore.js中,您可以找到以下代码,当存储设置为autoSync=true时,RowEditing插件中新创建的记录可能总是返回true

    filterNew: function(item) {
        // only want phantom records that are valid
        return item.phantom === true && item.isValid();
    },
    
  • 在我看来,最后一项是一个设计缺陷。默认情况下,isValid()函数应该返回true,如果出现问题,则依赖开发人员抛出错误


    最终的结果是,除非每个字段都有一个验证器,否则更新永远不会发送到CouchDB。您不会看到抛出任何错误,它将什么也不做。

    我开发了一个名为Senchacoach的库,可以轻松地将CouchDB用作托管应用程序代码和数据的唯一服务器。请访问。

    我刚刚分别为Sencha Touch和CouchDB发布了两个更新库(基于S.Farley以前的工作)。它们支持嵌套数据写入和基本CRUD


    谢谢,我来试试!