【问题标题】:Angular and Pouch DB in Factory工厂中的 Angular 和 Pouch DB
【发布时间】:2014-05-29 02:45:52
【问题描述】:

我正在尝试在应用程序启动时从 javascript 文件中加载 pouchdb 客户端数据库,但没有创建数据库。调试器中没有控制台错误。当我尝试调试时,下面这一行似乎失败了,因为它退出了匿名函数并且不允许我进一步进入该函数。

在这里失败--> angular.module('app').factory(serviceId, [ 'pouchdb', createclientdb]);

知道为什么我做错了吗?

 (function () {
        'use strict';

        var serviceId = 'clientedb';
        angular.module('app').factory(serviceId, [ 'pouchdb', createclientdb]);

        function createclientdb(pouchdb) {

            return pouchdb.create('mydb', function callback(err, result) {

                if (!err) {
                    alert('Successfully added a program!');
                }
                else {
                    alert('Failed added a program!');
                }
            });

            return true;
        }

    });

最新错误产生未捕获的异常。

 (function () {

        'use strict';

        var databasename = 'mydb';

        angular.module('app.clientdb', [])
            .factory('clientdb', ['pouchdb', function (pouchdb) {
                return pouchdb.create(databasename, function callback(err, result) {

                    if (!err) {
                        alert('Successfully added a program!');
                    }
                    else {
                        alert('Failed added a program!');
                    }
                });
            }]);

    });

我还有以下服务。有什么建议吗?

(function () {
    'use strict';

    angular.module('app').factory('clientdbservice', ['pouchdb','app.clientdb',clientdbservice]);


    function clientdbservice(clientdb) {
        return {
           adddata: function (obj) {
               clientdb.put(obj)
                    .then(function () {
                     log('data added to  Client DB');
                    })
                    .catch(function (error) {
                        log('Could not add data to  Client DB');
                    }).finally(function () {
                        // Do something when everything is done
                    });
            }
               };
        };
});

【问题讨论】:

  • 看起来您在声明之前使用了函数 createclientdb。

标签: javascript angularjs pouchdb


【解决方案1】:

我不是 100% 你的错误在哪里,但以下内容对我有用

'use strict';
angular.module('app.clientedb', [])
    .factory('clientedb', ['pouchdb', function(pouchdb) {
        return pouchdb.create('mydb', function callback(err, result) {

            if (!err) {
                alert('Successfully added a program!');
            }
            else {
                alert('Failed added a program!');
            }
        });
    }]);

我还按顺序包含了我的 js 文件

<script src="/lib/pouchdb-nightly.js"></script>
<script src="/lib/angular-pouchdb.js"></script>

我正在设置 angular lke

angular.module('app', [
                       'pouchdb',
                       'app.clientedb',
])

【讨论】:

  • 我遇到了未捕获的异常。我将更新主要问题。
  • "[$injector:modulerr] 无法实例化模块 app.clientedb,原因是:错误:[$injector:nomod] 模块 'app.clientedb' 不可用!您拼错了模块名称或忘记加载它。如果注册一个模块,请确保您指定
  • 你可能调用了你的 clientdbservice 而不是 app.clientedb
  • 我把它命名错了。但现在它不再引发任何错误,但不会创建数据库。没有引发异常。我认为这是缺少或注释掉的东西,但到目前为止我还没有发现这种情况。
  • 您能否给我一份您为完成这项工作而运行的测试文件的副本?谢谢
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 2017-05-30
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
相关资源
最近更新 更多