将数据从PouchDB服务传递到AngluarJS中的Controller

时间:2016-05-01 08:08:06

标签: angularjs angular-promise pouchdb

我已经在Angular / Ionic中设置了一个PouchDb服务,它在服务中运行良好,但是当我尝试将从PouchDB服务检索的数据传递给我的控制器时失败了。

这是我的服务

10.txt

这是控制器

angular.module('myApp', [])
.service('DBService', function($q) {
  var items;
  var db;
  var self = this;
  this.initDB = function() {
    return db = new PouchDB('simpleDB', {
      adapter: 'websql'
    });
  };
this.storeData = function() {
    return $q.when(
              db.put({
          _id: 'mydoc',
          title: 'some text'
        }).then(function (response) {
          // handle response
          console.log('done')
        }).catch(function (err) {
          console.log(err); 
        })
      )
  };
this.getData = function(){
  return $q.when(
    db.get('mydoc').then(function (doc) {
    // handle doc
    console.log(doc); // I see the data in console
     }).catch(function (err) {
     console.log(err);
     })
  )
}
})

当我使用then()时我得到错误TypeError:无法读取属性'然后'未定义的。

任何人都可以帮我弄清楚如何将数据从我的服务正确传递到控制器吗?

1 个答案:

答案 0 :(得分:0)

我很幸运能够快速找到错误!我没有在我的服务中返回数据,因此我将其更改为

this.getData = function(){
  return $q.when(
    db.get('mydoc').then(function (doc) {
    // handle doc
    return doc; // I added this 
    console.log(doc); // I see the data in console
     }).catch(function (err) {
     console.log(err);
     })
  )
}

并且then()返回undefined的原因是我意外地省略了返回$ q.when(来自this.getData函数的第二行!现在我在控制器中有我的数据就像我需要的那样!< / p>