使用promise重构数据库的操作
This commit is contained in:
parent
c70d081f23
commit
ed9e6a499c
159
database/db.js
159
database/db.js
|
|
@ -10,11 +10,22 @@ var client = mysql.createConnection({
|
||||||
|
|
||||||
client.connect();
|
client.connect();
|
||||||
|
|
||||||
|
// select 最多返回一行的话,返回对象,否则返回数组
|
||||||
|
// insert 返回关键字
|
||||||
|
// update delete 返回影响的行数
|
||||||
var db = {
|
var db = {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// var sql = "SELECT * FROM `users` WHERE `username` = 'luchenqun'";
|
||||||
|
// client.query(sql, (err, result) => {
|
||||||
|
// if (err) {
|
||||||
|
// console.log(err);
|
||||||
|
// } else {
|
||||||
|
// console.log(result);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
db.insertBookmark = function(user_id, bookmark) {
|
db.addBookmark = function(user_id, bookmark) {
|
||||||
var sql = "INSERT INTO `bookmarks` (`user_id`, `title`, `description`, `url`, `public`, `click_count`) VALUES ('" + user_id + "', '" + bookmark.title + "', '" + bookmark.description + "', '" + bookmark.url + "', '" + bookmark.public + "', '1')";
|
var sql = "INSERT INTO `bookmarks` (`user_id`, `title`, `description`, `url`, `public`, `click_count`) VALUES ('" + user_id + "', '" + bookmark.title + "', '" + bookmark.description + "', '" + bookmark.url + "', '" + bookmark.public + "', '1')";
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
client.query(sql, (err, result) => {
|
client.query(sql, (err, result) => {
|
||||||
|
|
@ -27,7 +38,7 @@ db.insertBookmark = function(user_id, bookmark) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
db.insertTagsBookmarks = function(tags, bookmard_id) {
|
db.addTagsBookmarks = function(tags, bookmard_id) {
|
||||||
sql = "INSERT INTO `tags_bookmarks` (`tag_id`, `bookmark_id`) VALUES";
|
sql = "INSERT INTO `tags_bookmarks` (`tag_id`, `bookmark_id`) VALUES";
|
||||||
for (var i = 0; i < tags.length; i++) {
|
for (var i = 0; i < tags.length; i++) {
|
||||||
if (i >= 1) {
|
if (i >= 1) {
|
||||||
|
|
@ -40,27 +51,20 @@ db.insertTagsBookmarks = function(tags, bookmard_id) {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
} else {
|
} else {
|
||||||
resolve();
|
resolve(result.affectedRows);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
db.updateLastUseTags = function(user_id, tags) {
|
db.updateLastUseTags = function(user_id, tags) {
|
||||||
sql = "UPDATE tags SET last_use = NOW() WHERE user_id = '" + user_id + "' AND id in (";
|
sql = "UPDATE tags SET last_use = NOW() WHERE user_id = '" + user_id + "' AND id in (" + tags.toString() + ")";
|
||||||
for (var i = 0; i < tags.length; i++) {
|
|
||||||
if (i >= 1) {
|
|
||||||
sql += ','
|
|
||||||
}
|
|
||||||
sql += "'" + tags[i] + "'";
|
|
||||||
}
|
|
||||||
sql += ')'
|
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
client.query(sql, (err, result) => {
|
client.query(sql, (err, result) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
} else {
|
} else {
|
||||||
resolve();
|
resolve(result.affectedRows);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
@ -79,29 +83,6 @@ db.clickBookmark = function(id) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
db.checkLogin = function(username, password) {
|
|
||||||
console.log('checkLogin');
|
|
||||||
var sql = "SELECT * FROM `users` WHERE `username` = '" + username + "'";
|
|
||||||
return new Promise(function(resolve, reject) {
|
|
||||||
client.query(sql, (err, result) => {
|
|
||||||
if (err) {
|
|
||||||
reject(err);
|
|
||||||
} else {
|
|
||||||
var ret = {
|
|
||||||
logined: false,
|
|
||||||
user: {},
|
|
||||||
}
|
|
||||||
if (password === result[0].password) {
|
|
||||||
ret.logined = true;
|
|
||||||
ret.user = result[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
resolve(ret);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
db.updateUserLastLogin = function(id) {
|
db.updateUserLastLogin = function(id) {
|
||||||
console.log('updateUserLastLogin');
|
console.log('updateUserLastLogin');
|
||||||
var sql = "UPDATE `users` SET `last_login`=now() WHERE (`id`='" + id + "')";
|
var sql = "UPDATE `users` SET `last_login`=now() WHERE (`id`='" + id + "')";
|
||||||
|
|
@ -114,6 +95,114 @@ db.updateUserLastLogin = function(id) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
db.getUser = function(username) {
|
||||||
|
console.log('getUser');
|
||||||
|
var sql = "SELECT * FROM `users` WHERE `username` = '" + username + "'";
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
client.query(sql, (err, result) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve(result[0]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
db.getTags = function(user_id) {
|
||||||
|
console.log('getTags');
|
||||||
|
var sql = "SELECT * FROM `tags` WHERE `user_id` = '" + user_id + "' ORDER BY last_use DESC";
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
client.query(sql, (err, result) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
db.getTagsByNames = function(user_id, tags_name) {
|
||||||
|
console.log('getTagsByNames');
|
||||||
|
var sql = "SELECT * FROM `tags` WHERE `user_id` = '" + user_id + "' AND `name` in (" + tags_name.toString() + ")";
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
client.query(sql, (err, result) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
db.addTags = function(user_id, tags_name) {
|
||||||
|
console.log('addTags', tags_name);
|
||||||
|
var sql = "INSERT INTO `tags` (`user_id`, `name`) VALUES";
|
||||||
|
tags_name.forEach((name, i) => {
|
||||||
|
if (i >= 1) {
|
||||||
|
sql += ','
|
||||||
|
}
|
||||||
|
sql += "('" + user_id + "', '" + name + "')";
|
||||||
|
});
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
client.query(sql, (err, result) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve(result.affectedRows);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
db.getBookmarksNavigate = function(user_id) {
|
||||||
|
console.log('getBookmarksNavigate');
|
||||||
|
var sql = "SELECT t.id as tag_id, t.name as tag_name, b.* FROM `tags` as t LEFT OUTER JOIN tags_bookmarks as tb ON t.id = tb.tag_id LEFT OUTER JOIN bookmarks as b ON tb.bookmark_id = b.id WHERE t.user_id='" + user_id + "' ORDER BY t.id ASC, b.click_count DESC";
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
client.query(sql, (err, result) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
db.getBookmarksTable = function(user_id) {
|
||||||
|
var sql = "SELECT id, user_id, title, description, url, public, click_count, DATE_FORMAT(created_at, '%Y-%m-%d') as created_at, DATE_FORMAT(last_click, '%Y-%m-%d') as last_click FROM `bookmarks` WHERE user_id='" + user_id + "' ORDER BY click_count DESC, created_at DESC LIMIT 0, 50";
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
client.query(sql, (err, result) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
db.getBookmarksCard = function(user_id) {
|
||||||
|
return db.getBookmarksTable(user_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
db.getTagsBookmarks = function(bookmark_ids) {
|
||||||
|
console.log('getTagsBookmarks');
|
||||||
|
var sql = "SELECT * FROM `tags_bookmarks` WHERE bookmark_id in(" + bookmark_ids.toString() + ")"
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
client.query(sql, (err, result) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = db;
|
module.exports = db;
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,12 @@
|
||||||
<div class="ui segment" ng-if="showStyle === 'navigate'">
|
<div class="ui segment" ng-if="showStyle === 'navigate'">
|
||||||
<div class="ui internally grid">
|
<div class="ui internally grid">
|
||||||
<div class="row" ng-repeat="tag in bookmarks">
|
<div class="centered row" ng-repeat="tag in bookmarks">
|
||||||
<div class="wrap" style="width:80px">
|
<div class="wrap" style="width:88px;color:#0aa770;text-align:left;">
|
||||||
<span style="color:#0aa770;" title="{{ tag.name }}"> {{ tag.name }}</span>
|
<span title="{{ tag.name }}">{{ tag.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="fourteen wide column">
|
<div class="fourteen wide column">
|
||||||
<div class="ui grid container">
|
<div class="ui grid container">
|
||||||
<div
|
<div class="two wide column js-navigate-bookmark" ng-class="{divHover:hoverItem}" ng-mouseover="hoverItem=true" ng-mouseleave="hoverItem=false" ng-repeat="bookmark in tag.bookmarks" ng-click="jumpToUrl(bookmark.url, bookmark.id)" title="{{ bookmark.title }}">
|
||||||
class="two wide column js-navigate-bookmark"
|
|
||||||
ng-class="{divHover:hoverItem}"
|
|
||||||
ng-mouseover="hoverItem=true"
|
|
||||||
ng-mouseleave="hoverItem=false"
|
|
||||||
ng-repeat="bookmark in tag.bookmarks"
|
|
||||||
ng-click="jumpToUrl(bookmark.url, bookmark.id)"
|
|
||||||
title="{{ bookmark.title }}">
|
|
||||||
<!-- <i class="remove circle icon"></i> -->
|
<!-- <i class="remove circle icon"></i> -->
|
||||||
<img class="ui ui middle aligned tiny image" src="http://api.byi.pw/favicon/?url={{ bookmark.url }}" style="width:16px;height:16px">
|
<img class="ui ui middle aligned tiny image" src="http://api.byi.pw/favicon/?url={{ bookmark.url }}" style="width:16px;height:16px">
|
||||||
<span>{{ bookmark.title}}</span>
|
<span>{{ bookmark.title}}</span>
|
||||||
|
|
|
||||||
229
routes/api.js
229
routes/api.js
|
|
@ -7,15 +7,6 @@ var cheerio = require('cheerio');
|
||||||
var request = require('request');
|
var request = require('request');
|
||||||
var iconv = require('iconv-lite');
|
var iconv = require('iconv-lite');
|
||||||
var db = require('../database/db.js');
|
var db = require('../database/db.js');
|
||||||
var client = mysql.createConnection({
|
|
||||||
host: '127.0.0.1' || '172.24.13.5',
|
|
||||||
user: 'lcq' || 'root',
|
|
||||||
password: 'fendoubuxi596320' || 'root123',
|
|
||||||
database: 'mybookmarks',
|
|
||||||
multipleStatements: true,
|
|
||||||
port: 3306
|
|
||||||
});
|
|
||||||
client.connect();
|
|
||||||
|
|
||||||
api.post('/getTitle', function(req, response) {
|
api.post('/getTitle', function(req, response) {
|
||||||
var params = req.body.params;
|
var params = req.body.params;
|
||||||
|
|
@ -24,8 +15,6 @@ api.post('/getTitle', function(req, response) {
|
||||||
var options = {
|
var options = {
|
||||||
url: url,
|
url: url,
|
||||||
encoding: null,
|
encoding: null,
|
||||||
//代理服务器
|
|
||||||
//proxy: 'http://xxx.xxx.xxx.xxx:8888',
|
|
||||||
headers: {
|
headers: {
|
||||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
|
||||||
}
|
}
|
||||||
|
|
@ -78,14 +67,20 @@ api.post('/login', function(req, res) {
|
||||||
var params = req.body.params;
|
var params = req.body.params;
|
||||||
var username = params.username;
|
var username = params.username;
|
||||||
var password = md5(params.password);
|
var password = md5(params.password);
|
||||||
db.checkLogin(username, password)
|
db.getUser(username)
|
||||||
.then((ret) => {
|
.then((user) => {
|
||||||
if (ret.logined) {
|
var ret = {
|
||||||
|
logined: false,
|
||||||
|
user: {},
|
||||||
|
}
|
||||||
|
if (user && user.password === password) {
|
||||||
|
ret.logined = true;
|
||||||
|
ret.user = user;
|
||||||
req.session.username = ret.user.username;
|
req.session.username = ret.user.username;
|
||||||
req.session.userId = ret.user.id;
|
req.session.userId = ret.user.id;
|
||||||
db.updateUserLastLogin(ret.user.id);
|
|
||||||
}
|
}
|
||||||
res.json(ret);
|
res.json(ret);
|
||||||
|
return ret.logined ? db.updateUserLastLogin(ret.user.id) : Promise.resolve(0);
|
||||||
})
|
})
|
||||||
.then((affectedRows) => {
|
.then((affectedRows) => {
|
||||||
console.log('updateUserLastLogin affectedRows ', affectedRows)
|
console.log('updateUserLastLogin affectedRows ', affectedRows)
|
||||||
|
|
@ -94,39 +89,36 @@ api.post('/login', function(req, res) {
|
||||||
});
|
});
|
||||||
|
|
||||||
api.get('/autoLogin', function(req, res) {
|
api.get('/autoLogin', function(req, res) {
|
||||||
if (req.session.username) {
|
var ret = {
|
||||||
console.log('session:' + req.session.username);
|
logined: false,
|
||||||
var sql = "SELECT * FROM `users` WHERE `username` = '" + req.session.username + "'";
|
user: {},
|
||||||
client.query(sql, function(error, result, fields) {
|
|
||||||
var id = '';
|
|
||||||
var logined = false;
|
|
||||||
if (!error && result.length === 1) {
|
|
||||||
req.session.username = result[0].username;
|
|
||||||
req.session.id = result[0].id;
|
|
||||||
logined = true;
|
|
||||||
id = result[0].id;
|
|
||||||
}
|
}
|
||||||
res.json({
|
if (req.session.username) {
|
||||||
logined: logined,
|
db.getUser(req.session.username)
|
||||||
userId: id,
|
.then((user) => {
|
||||||
});
|
if (user) {
|
||||||
|
ret.logined = true;
|
||||||
|
ret.user = user;
|
||||||
|
}
|
||||||
|
res.json(ret);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
res.json(ret);
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
res.json({
|
res.json(ret);
|
||||||
logined: false,
|
|
||||||
userId: '',
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
api.get('/bookmarks', function(req, res) {
|
api.get('/bookmarks', function(req, res) {
|
||||||
console.log('hello bookmarks', JSON.stringify(req.query));
|
console.log('hello bookmarks', JSON.stringify(req.query), req.session.username);
|
||||||
if (!req.session.username) {
|
if (!req.session.username) {
|
||||||
res.send(401);
|
res.send(401);
|
||||||
}
|
}
|
||||||
|
var userId = '1';
|
||||||
if (req.query.show === 'navigate') {
|
if (req.query.show === 'navigate') {
|
||||||
var sql = "SELECT t.id as tag_id, t.name as tag_name, b.* FROM `tags` as t LEFT OUTER JOIN tags_bookmarks as tb ON t.id = tb.tag_id LEFT OUTER JOIN bookmarks as b ON tb.bookmark_id = b.id ORDER BY t.id ASC, b.click_count DESC";
|
db.getBookmarksNavigate(userId)
|
||||||
client.query(sql, function(error, result, fields) {
|
.then((result) => {
|
||||||
var data = [];
|
var data = [];
|
||||||
var tag = {
|
var tag = {
|
||||||
id: result && result[0] && result[0].tag_id,
|
id: result && result[0] && result[0].tag_id,
|
||||||
|
|
@ -158,44 +150,33 @@ api.get('/bookmarks', function(req, res) {
|
||||||
})
|
})
|
||||||
res.json(data);
|
res.json(data);
|
||||||
})
|
})
|
||||||
|
.catch((err) => console.log('bookmarks navigate err', err));
|
||||||
} else {
|
} else {
|
||||||
var sqlBookmarks = "SELECT id, user_id, title, description, url, public, click_count, DATE_FORMAT(created_at, '%Y-%m-%d') as created_at, DATE_FORMAT(last_click, '%Y-%m-%d') as last_click FROM `bookmarks` WHERE user_id='1' ORDER BY click_count DESC, created_at DESC LIMIT 0, 50";
|
var bookmarks = [];
|
||||||
var sqlTags = "SELECT id, name FROM `tags` WHERE user_id='1'";
|
var tagsBookmarks = [];
|
||||||
|
|
||||||
client.query(sqlBookmarks, function(error, result1, fields) {
|
db.getBookmarksTable(userId)
|
||||||
if (error) {
|
.then((bms) => {
|
||||||
res.json({
|
bookmarks = bms;
|
||||||
error: "数据查询出错"
|
var bookmarkIds = []
|
||||||
});
|
bookmarks.forEach((bookmark) => {
|
||||||
} else {
|
bookmarkIds.push(bookmark.id);
|
||||||
var bookmark_ids = ''
|
|
||||||
result1.forEach(function(bookmark) {
|
|
||||||
bookmark_ids += "'" + bookmark.id + "',";
|
|
||||||
})
|
})
|
||||||
bookmark_ids = bookmark_ids.slice(0, bookmark_ids.length - 1);
|
return db.getTagsBookmarks(bookmarkIds);
|
||||||
|
})
|
||||||
var sqlTagIdBookmarkId = "SELECT * FROM `tags_bookmarks` WHERE bookmark_id in(" + bookmark_ids + ")";
|
.then((tbs) => {
|
||||||
client.query(sqlTagIdBookmarkId, function(error, result2, fields) {
|
tagsBookmarks = tbs;
|
||||||
// console.log(result2);
|
return db.getTags(userId);
|
||||||
if (error) {
|
})
|
||||||
res.json({
|
.then((tags) => {
|
||||||
error: "数据查询出错"
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
client.query(sqlTags, function(error, result3, fields) {
|
|
||||||
// console.log(result3);
|
|
||||||
if (error) {
|
|
||||||
res.json({
|
|
||||||
error: "数据查询出错"
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
var data = [];
|
var data = [];
|
||||||
result1.forEach(function(bookmark) {
|
// 获取每个书签的所有分类标签
|
||||||
|
bookmarks.forEach(function(bookmark) {
|
||||||
var tags = [];
|
var tags = [];
|
||||||
result2.forEach(function(bookmark_tag) {
|
tagsBookmarks.forEach(function(tb) {
|
||||||
if (bookmark_tag.bookmark_id == bookmark.id) {
|
if (tb.bookmark_id == bookmark.id) {
|
||||||
result3.forEach(function(tag) {
|
tags.forEach(function(tag) {
|
||||||
if (bookmark_tag.tag_id == tag.id) {
|
if (tb.tag_id == tag.id) {
|
||||||
tags.push(tag)
|
tags.push(tag)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
@ -205,111 +186,53 @@ api.get('/bookmarks', function(req, res) {
|
||||||
data.push(bookmark);
|
data.push(bookmark);
|
||||||
})
|
})
|
||||||
res.json(data);
|
res.json(data);
|
||||||
}
|
})
|
||||||
});
|
.catch((err) => console.log('bookmarks table or card err', err))
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
api.get('/tags', function(req, res) {
|
api.get('/tags', function(req, res) {
|
||||||
console.log('hello tags', JSON.stringify(req.query));
|
db.getTags(req.query.user_id)
|
||||||
var user_id = req.query.user_id;
|
.then((tags) => res.json(tags))
|
||||||
var sql = "SELECT id, name FROM `tags` WHERE `user_id` = '" + user_id + "' ORDER BY last_use DESC"
|
.catch((err) => console.log('tags', err));
|
||||||
client.query(sql, function(error, result, fields) {
|
|
||||||
if (error) {
|
|
||||||
res.json({
|
|
||||||
error: 'error tags'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
res.json(result);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
|
|
||||||
api.post('/addBookmark', function(req, res) {
|
api.post('/addBookmark', function(req, res) {
|
||||||
console.log('hello addBookmark', JSON.stringify(req.query), JSON.stringify(req.body));
|
console.log('hello addBookmark', JSON.stringify(req.query), JSON.stringify(req.body));
|
||||||
var params = req.body.params;
|
var bookmark = req.body.params;
|
||||||
var user_id = '1';
|
var user_id = '1';
|
||||||
var tags = params.tags;
|
var tags = bookmark.tags;
|
||||||
db.insertBookmark(user_id, params) // 插入书签
|
db.addBookmark(user_id, params) // 插入书签
|
||||||
.then((bookmark_id) => db.insertTagsBookmarks(tags, bookmark_id)) // 插入分类
|
.then((bookmark_id) => db.addTagsBookmarks(tags, bookmark_id)) // 插入分类
|
||||||
.then(() => db.updateLastUseTags(user_id, tags)) // 更新最新使用的分类
|
.then(() => db.updateLastUseTags(user_id, tags)) // 更新最新使用的分类
|
||||||
.then(() => res.json({})) // 运气不错
|
.then(() => res.json({})) // 运气不错
|
||||||
.catch(() => console.log('fail')); // ops!
|
.catch((err) => console.log('addBookmark err', err)); // oops!
|
||||||
});
|
});
|
||||||
|
|
||||||
api.post('/addTags', function(req, res) {
|
api.post('/addTags', function(req, res) {
|
||||||
console.log('hello addTags', JSON.stringify(req.query), JSON.stringify(req.body));
|
console.log('hello addTags', JSON.stringify(req.query), JSON.stringify(req.body));
|
||||||
var params = req.body.params;
|
var tagsName = req.body.params;
|
||||||
var user_id = '1';
|
var user_id = '1';
|
||||||
var addTagNames = [];
|
var addTagNames = [];
|
||||||
var sql = "SELECT * FROM `tags` WHERE `user_id` = '" + user_id + "' AND `name` in (";
|
|
||||||
for (var i = 0; i < params.length; i++) {
|
|
||||||
if (i >= 1) {
|
|
||||||
sql += ','
|
|
||||||
}
|
|
||||||
sql += "'" + params[i] + "'";
|
|
||||||
};
|
|
||||||
sql += ")";
|
|
||||||
console.log(sql);
|
|
||||||
client.query(sql, function(error, result1, fields) {
|
|
||||||
if (error) {
|
|
||||||
res.json({
|
|
||||||
error: 'error tags'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
params.forEach(function(name) {
|
|
||||||
var find = false;
|
|
||||||
result1.forEach(function(tag) {
|
|
||||||
if (tag.name == name) {
|
|
||||||
find = true;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
if (!find) {
|
|
||||||
addTagNames.push(name);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
sql = "INSERT INTO `tags` (`user_id`, `name`) VALUES";
|
db.getTags(user_id)
|
||||||
for (var i = 0; i < addTagNames.length; i++) {
|
.then((tags) => {
|
||||||
if (i >= 1) {
|
// 需要插入的书签是该用户在数据库不存在的书签
|
||||||
sql += ','
|
addTagNames = tagsName.filter((name) => {
|
||||||
|
for (var i = 0; i < tags.length; i++) {
|
||||||
|
if (tags[i].name.toLowerCase() === name.toLowerCase()) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
sql += "('" + user_id + "', '" + addTagNames[i] + "')";
|
|
||||||
}
|
}
|
||||||
if (addTagNames.length == 0) {
|
return true;
|
||||||
sql = "SELECT id, name FROM `tags` WHERE `user_id` = '" + user_id + "'";
|
|
||||||
}
|
|
||||||
console.log(sql);
|
|
||||||
client.query(sql, function(error, result, fields) {
|
|
||||||
if (error) {
|
|
||||||
res.json({
|
|
||||||
error: 'error tags'
|
|
||||||
});
|
});
|
||||||
} else {
|
return Promise.resolve(addTagNames);
|
||||||
if (addTagNames.length == 0) {
|
})
|
||||||
res.json(result);
|
.then((newTagNames) => db.addTags(user_id, newTagNames))
|
||||||
} else {
|
.then(() => db.getTags(user_id))
|
||||||
sql = "SELECT id, name FROM `tags` WHERE `user_id` = '" + user_id + "' ORDER BY last_use DESC"
|
.then((tags) => res.json(tags))
|
||||||
client.query(sql, function(error, result, fields) {
|
.catch((err) => console.log('addTags err', err));
|
||||||
if (error) {
|
|
||||||
res.json({
|
|
||||||
error: 'error tags'
|
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
res.json(result);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
// client.end();
|
|
||||||
|
|
||||||
function md5(str) {
|
function md5(str) {
|
||||||
return crypto
|
return crypto
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue