【问题标题】:get allDocs from service and controller using pouchdb使用 pouchdb 从服务和控制器获取 allDocs
【发布时间】:2015-11-20 21:28:24
【问题描述】:

我有问题如何从服务和控制器获取数据。现在我想在我的网络应用程序中实现 CRUD。 这是我的服务。

application.service('Arrears', [
function() 
{
    var db = new PouchDB('localhost:5984/arrears');

    return {
        allDocs: function (startKey, endKey, desc) {
            db.allDocs({startkey: startKey, endkey: endKey, descending: desc})
                .then(function (result) {
                    console.log(result, 'Results from allDocs');
                    return result;
                })
        },
    }
}

]);

这是我的控制器。

application.controller('ArrearsManagementAllController', ['$location', '$mdSidenav', '$scope', 'Arrears',
function($location, $mdSidenav, $scope, Arrears)
{
    $scope.items= Arrears.allDocs();
}

]);

和我的 html 一样。

<md-list-item md-virtual-repeat="i in items | orderBy:'status'" ng-click="read(id)">
   <b md-highlight-flags="gi">
   Status :</b> {{i.status}}
   <b md-highlight-text="query.$" style="color:blue"
       md-highlight-flags="gi">
       {{i.owner_name}} 
       ({{i.owner_id}})
   </b>
   <p class="md-caption"
       md-highlight-text="query.$">
       {{i.address}}
   </p>
   <p class="md-caption"
       md-highlight-text="query.$">
       {{i.house_no}} - Floor {{i.floor}} -, Lot {{i.lot}} -, Block {{i.block}} - {{i.locality}}
   </p>

我是 angularjs 和 pouchdb 的新手。请帮我。

【问题讨论】:

    标签: angularjs service controller couchdb pouchdb


    【解决方案1】:

    问题是allDocs() 不返回文档列表;它返回一个文档列表的promise。查看this post on promises 的概述,但基本上你需要这样做:

    application.service('Arrears', [
    function() 
    {
        var db = new PouchDB('localhost:5984/arrears');
    
        return {
            allDocs: function (startKey, endKey, desc) {
                return db.allDocs({startkey: startKey, endkey: endKey, descending: desc, include_docs: true})
            },
        }
    }
    ]);
    
    application.controller('ArrearsManagementAllController', ['$location', '$mdSidenav', '$scope', 'Arrears',
    function($location, $mdSidenav, $scope, Arrears)
    {
        $scope.items = [];
        Arrears.allDocs().then(function (res) {
          $scope.items = res.rows.map(function (row) {
            return row.doc;
          });
        }).catch(console.log.bind(console));
    }
    

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      相关资源
      最近更新 更多