为 angularjs 创建一个 ydn-db 服务

Posted

技术标签:

【中文标题】为 angularjs 创建一个 ydn-db 服务【英文标题】:creating a ydn-db service for angularjs 【发布时间】:2014-08-28 14:11:33 【问题描述】:

我正在使用 Meanjs 和 ydn-db 来支持 indexeddb 的项目。

所以我正在尝试以角度提供服务,但我无法找到正确包含 js 文件的方法。我尝试通过以下方法安装库:

    凉亭安装 ydn-db

    凉亭安装ydndb

    第一种情况,我找不到像ydn.db-isw-core-qry-dev.js 这样的合适的.js 文件。现在第二个将安装我可以工作的两个缩小版本,但我总是得到 ydn not found 错误

现在通过查看开发者页面http://dev.yathit.com/ydn-db/getting-started.html,我可以看到他有一种方法可以在 AMD 加载器部分中生成 require,我根本不知道如何在服务工厂中使用它。 这是我在工厂内尝试做的事情,顺便说一句,我认为这不是最佳实践...... 这些是我尝试加载时遇到的错误... 我怎样才能使用这个库,同时仍然遵循 Angular 的最佳实践,或者至少只是让它正常工作?

ldb undefined 
Object db: Object, debug: Object    

Uncaught ydn.error.ArgumentException: Unknown attribute "keypath"

angular.module(ApplicationConfiguration.applicationModuleName).factory('Localdb',['$resource','$q',
    function($resource,$q) 
        var deferred=$q.defer();
        require.config(
            baseUrl: '/content',
            paths: 
                ydn: 'scripts/ydn.db-isw-core-qry-dev'
            
        );
            require(['scripts/ydn.db-isw-core-qry-dev'], function(ldb)
                console.log ('ldb',ldb);//this is undefined   
                var schema =
                    stores:[
                        
                            name:'process',
                            keypath:'_id',
                            indexes:[
                                    name:'processId',
                                    keypath:'processId',
                                    unique:false
                                ,
                                    name:'processMeta',
                                    keypath:'processMeta',
                                    unique:false
                                
                            ]
                        
                    ]
                ;
                console.log(ydn);//this gets back ok but then the keypath error???
                deferred.resolve(new ydn.db.Storage('pdc',schema));
            );
            return deferred.promise;
    
]);

【问题讨论】:

【参考方案1】:

抱歉,麻烦您了。 ydn-db repo 没有编译过的 js 文件,正如 bower 所要求的(我认为)。所以它不起作用。只需 download js 文件之一并添加到您的 html 中。

还可以查看ydn-db with angular example app。

【讨论】:

有什么方法可以让 ydn 与 requirejs 一起工作?当我尝试加载回调参数时,我在回调参数中也有空引用 我已经尝试下载该文件,但它给了我一个找不到 KeyPath 错误...所以现在我使用 ydndb bower 方法,但仍然得到“ydn is not defined”,另外我必须下载我认为与 ydndb bower 存储库不匹配的地图。有什么想法可以解决这个问题吗?? 我将更新凉亭支持。看起来我们已经到了凉亭的年龄,不知道如何在本地使用 javascript 文件。 @KyawTun 感谢您将凉亭支持放在您的待办事项中(这将是有用且更易于实施),无论如何我的观点与它没有任何关系,我只是想被盯着使用您的库并使用 require.js 以与您提到 dev.yathit.com/ydn-db/getting-started.html 相同的方式加载它,奇怪的是我在回调参数中得到一个空引用,我将发布一个关于这个问题的问题。 ydn.db 现在应该在凉亭中可用。 bower install ydn.db.

以上是关于为 angularjs 创建一个 ydn-db 服务的主要内容,如果未能解决你的问题,请参考以下文章

YDN-DB - 删除数据库,然后在页面加载/重新加载时重新创建和加载,但在刷新时不加载

使用 ydn-db 循环遍历 indexDb 的最佳方法

YDN-DB中的简单搜索功能

如何使用 YDN-DB 在 keypath 之后获取下一个元素

YDN-DB executeSql 在浏览器上无法正常工作

YDN-DB 可以一次处理大型条目吗?