diff --git a/database/db.js b/database/db.js index 39c5fd0..9803c02 100644 --- a/database/db.js +++ b/database/db.js @@ -114,7 +114,7 @@ db.updateBookmark = function(bookmark) { } db.getBookmark = function(id) { - var sql = "SELECT * FROM `bookmarks` WHERE `id` = '" + id + "'"; + var sql = "SELECT id, user_id, title, description, url, public, click_count, DATE_FORMAT(created_at, '%Y-%m-%d %H:%i:%s') as created_at, DATE_FORMAT(last_click, '%Y-%m-%d %H:%i:%s') as last_click FROM `bookmarks` WHERE `id` = '" + id + "'"; return new Promise(function(resolve, reject) { client.query(sql, (err, result) => { if (err) { @@ -140,6 +140,19 @@ db.getBookmarkTags = function(bookmard_id) { }); } +db.getBookmarkTagsNames = function(bookmard_id) { + var sql = "SELECT tags_bookmarks.tag_id as id, tags.name FROM tags_bookmarks LEFT JOIN tags ON tags.id = tags_bookmarks.tag_id WHERE bookmark_id = '"+ bookmard_id +"'"; + return new Promise(function(resolve, reject) { + client.query(sql, (err, result) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }); + }); +} + db.delBookmarkTags = function(bookmard_id) { var sql = "DELETE FROM `tags_bookmarks` WHERE (`bookmark_id`='" + bookmard_id + "')"; return new Promise(function(resolve, reject) { diff --git a/public/scripts/controllers/bookmarks-controller.js b/public/scripts/controllers/bookmarks-controller.js index 0ba0533..95512e4 100644 --- a/public/scripts/controllers/bookmarks-controller.js +++ b/public/scripts/controllers/bookmarks-controller.js @@ -231,17 +231,28 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', ' } pubSubService.subscribe('EditCtr.inserBookmarsSuccess', $scope, function(event, data) { - console.log('subscribe EditCtr.inserBookmarsSuccess', params); + console.log('subscribe EditCtr.inserBookmarsSuccess', JSON.stringify(data)); var menusScope = $('div[ng-controller="menuCtr"]').scope(); if (menusScope.login && menusScope.selectLoginIndex == 0) { - $scope.showStyle = $scope.showStyle; $scope.forbidTransition = true; if ($scope.showStyle == 'card') { - $scope.currentPage = 1; - $scope.bookmarks = []; + var find = false; + $scope.bookmarks.forEach((bookmark) => { + if (bookmark.id == data.id) { + bookmark.title = data.title; + bookmark.url = data.url; + bookmark.tags = data.tags; + bookmark.description = data.description; + find = true; + } + }) + if (!find) { + $scope.bookmarks.unshift(data); + } + } else { + getBookmarks(); } - getBookmarks(); } }); @@ -302,6 +313,7 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', ' index: 0 }); if (!($scope.forbidTransition && $scope.forbidTransition == true)) { + $scope.forbidTransition = false; transition(); } }) diff --git a/public/scripts/controllers/tags-controller.js b/public/scripts/controllers/tags-controller.js index f449e88..20a3163 100644 --- a/public/scripts/controllers/tags-controller.js +++ b/public/scripts/controllers/tags-controller.js @@ -83,8 +83,8 @@ app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', '$tim currentPage: currentPage, perPageItems: perPageItems, }; - $('.js-tags-table').transition('hide'); + $('.js-tags-table').transition('hide'); bookmarkService.getBookmarksByTag(params) .then((data) => { $scope.bookmarkData = data; @@ -436,10 +436,21 @@ app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', '$tim pubSubService.subscribe('EditCtr.inserBookmarsSuccess', $scope, function(event, data) { console.log('subscribe EditCtr.inserBookmarsSuccess', data); - var menusScope = $('div[ng-controller="menuCtr"]').scope(); if (menusScope.login && menusScope.selectLoginIndex == 1) { - getTags({}); + var find = false; + $scope.bookmarkData.bookmarks.forEach((bookmark) => { + if (bookmark.id == data.id) { + bookmark.title = data.title; + bookmark.url = data.url; + bookmark.tags = data.tags; + bookmark.description = data.description; + find = true; + } + }) + if (!find) { + getTags({}); + } } }); diff --git a/routes/api.js b/routes/api.js index 181fd36..3026cd4 100644 --- a/routes/api.js +++ b/routes/api.js @@ -236,16 +236,25 @@ api.post('/updateBookmark', function(req, res) { res.send(401); return; } - var bookmark = req.body.params; - console.log('hello updateBookmark', JSON.stringify(bookmark)); + var bookmark = req.body.params; var userId = req.session.user.id; var tags = bookmark.tags; + var ret = {} + console.log('hello updateBookmark', JSON.stringify(bookmark)); db.updateBookmark(bookmark) // 更新标签信息 .then((affectedRows) => db.delBookmarkTags(bookmark.id)) // 将之前所有的书签分类信息删掉 .then((insertId) => db.addTagsBookmarks(tags, bookmark.id)) // 将新的分类关联起来 .then(() => db.updateLastUseTags(userId, tags)) // 更新最近使用的分类(这个有待考虑) - .then(() => res.json({})) // 运气不错 + .then(() => db.getBookmark(bookmark.id)) // 将新的信息返回去 + .then((bookmark) => { + ret = bookmark; + return db.getBookmarkTagsNames(bookmark.id); + }) + .then((tags) => { + ret.tags = tags; + res.json(ret); + }) // 运气不错 .catch((err) => console.log('updateBookmark err', err)); // oops! }) @@ -726,7 +735,7 @@ api.post('/addBookmark', function(req, res) { .then(() => db.getBookmark(bookmarkId)) // 获取书签信息,返回去 .then((bookmark) => { ret = bookmark; - return db.getBookmarkTags(bookmarkId); + return db.getBookmarkTagsNames(bookmark.id); }) .then((bookmarkTags) => { ret.tags = bookmarkTags;