我正在尝试让delta-pouch plugin与我的AngularJS应用上的PouchDB设置一起使用。
我在Angular的数据服务如下:
myApp.factory('DataService', ['$q', '$rootScope', 'PouchDB', function($q, $rootScope, PouchDB) {
return {
add: function(doc) {
var deferred = $q.defer();
PouchDB.post(doc, function(err, res) {
$rootScope.$apply(function() {
if (err) {
deferred.reject(err)
} else {
deferred.resolve(res)
}
});
});
return deferred.promise;
},
list: function() {
var deferred = $q.defer();
return PouchDB.allDocs({include_docs: true, descending: true}, function(err, res) {
$rootScope.$apply(function() {
if (err) {
deferred.reject(err)
} else {
deferred.resolve(res)
}
});
});
return deferred.promise;
},
update: function(obj) {
var deferred = $q.defer();
return PouchDB.save(obj, function(err, res) {
$rootScope.$apply(function() {
if (err) {
deferred.reject(err)
} else {
deferred.resolve(res)
}
});
});
return deferred.promise;
},
get: function(id) {
return PouchDB.get(id);
},
destroy: function() {
PouchDB.destroy();
}
}
}]);
list
和add
工作正常,但调用save
会返回以下错误。这是
Error: 'undefined' is not a constructor (evaluating 'new Promise(function (fulfill) {
db.post(doc).then(function (doc) {
fulfill(doc);
});
})')
说实话,我不完全确定我在做什么,因为我对Angular很新。任何帮助将不胜感激。
答案 0 :(得分:0)
Promise
未在浏览器中正确实现,这意味着您可能需要使用明确的Promise垫片,如this one。
答案 1 :(得分:0)
我发布了一个名为factoryng的一体化angularjs绑定,您可以将其用于将delta包(或香草包)整合到角度代码中。我认为这将有助于您在deltajs代码中使用delta包。
此外,我建议您查看Contacts example,因为它涵盖了所有CRUD操作。如果您仍然遇到问题,请告诉我。