使用 pouchdb 从服务和控制器获取 allDocs

get allDocs from service and controller using pouchdb

我对如何从服务和控制器获取数据有疑问。现在我想在我的网络应用程序中实施 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 的新手。请帮我。

问题是 allDocs() 没有 return 文件列表;它return是对文档列表的承诺。查看 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));
}

希望对您有所帮助!