1(function() { 2 function errorHandler(error, callback) { 3 if (error) { 4 callback && callback(error); 5 throw error; 6 } 7 } 8 9 function pageview(_AV ,options) { 10 var AV = _AV; 11 var appId, appKey, appClass; 12 appId = options.appId; 13 appKey = options.appKey; 14 appClass = options.appClass; 15 AV.init({ 16 appId: appId, 17 appKey: appKey 18 }); 19 return { 20 get: get, 21 increase: increase 22 }; 23 24 function searchKey(key) { 25 var query = new AV.Query(appClass); 26 query.equalTo('key', key); 27 return query.first(); 28 } 29 30 function insert(key, title) { 31 var Blog = AV.Object.extend(appClass); 32 var blog = new Blog(); 33 blog.set('title', title); 34 blog.set('key', key); 35 blog.set('views', 0); 36 return blog.save(); 37 } 38 39 function increment(result) { 40 result.increment('views', 1); 41 return result.save(null, { 42 fetchWhenSave: true 43 }); 44 } 45 46 function get(key, callback) { 47 searchKey(key).then(function(result) { 48 if (result) { 49 callback && callback(result.attributes.views); 50 } 51 }, errorHandler); 52 } 53 54 function increase(key, title, callback) { 55 searchKey(key).then(function(result) { 56 if (result) { 57 increment(result).then(function(result) { 58 callback && callback(result.attributes.views); 59 }); 60 } else { 61 insert(key, title).then(function(result) { 62 increment(result).then(function(result) { 63 callback && callback(result.attributes.views); 64 }); 65 }, errorHandler); 66 } 67 }, errorHandler); 68 } 69 } 70 window.pageview = pageview; 71})();