From ebab715fc0798f2ca09d72b22bcf7e22a6c4d113 Mon Sep 17 00:00:00 2001 From: luchenqun Date: Mon, 7 Nov 2016 22:46:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8promise=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/db.js | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++ routes/api.js | 48 ++++++++++++++++++++++------------- 2 files changed, 98 insertions(+), 18 deletions(-) create mode 100644 database/db.js diff --git a/database/db.js b/database/db.js new file mode 100644 index 0000000..ddee633 --- /dev/null +++ b/database/db.js @@ -0,0 +1,68 @@ +var mysql = require('mysql'); +var client = mysql.createConnection({ + host: '127.0.0.1', + user: 'lcq', + password: 'fendoubuxi596320', + database: 'mybookmarks', + multipleStatements: true, + port: 3306 +}); +client.connect(); + +var db = { + +} + +db.insertBookmark = 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')"; + return new Promise(function(resolve, reject) { + client.query(sql, (err, result) => { + if (err) { + reject(err); + } else { + resolve(result.insertId); + } + }); + }); +}; + +db.insertTagsBookmarks = function(tags, bookmard_id) { + sql = "INSERT INTO `tags_bookmarks` (`tag_id`, `bookmark_id`) VALUES"; + for (var i = 0; i < tags.length; i++) { + if (i >= 1) { + sql += ',' + } + sql += "('" + tags[i] + "', '" + bookmard_id + "')"; + } + return new Promise(function(resolve, reject) { + client.query(sql, (err, result) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); +} + +db.updateLastUseTags = function(user_id, tags) { + sql = "UPDATE tags SET last_use = NOW() WHERE user_id = '" + user_id + "' AND id in ("; + for (var i = 0; i < tags.length; i++) { + if (i >= 1) { + sql += ',' + } + sql += "'" + tags[i] + "'"; + } + sql += ')' + return new Promise(function(resolve, reject) { + client.query(sql, (err, result) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); +} + +module.exports = db; diff --git a/routes/api.js b/routes/api.js index 93e3e0e..5a053d0 100644 --- a/routes/api.js +++ b/routes/api.js @@ -4,8 +4,9 @@ var crypto = require('crypto'); var http = require('http'); var https = require('https'); var cheerio = require('cheerio'); -var request = require('request') -var iconv = require('iconv-lite') +var request = require('request'); +var iconv = require('iconv-lite'); +var db = require('./database/db.js'); var client = mysql.createConnection({ host: '127.0.0.1', user: 'lcq', @@ -17,6 +18,13 @@ var client = mysql.createConnection({ client.connect(); api.post('/getTitle', function(req, response) { + // request + // .get('https://www.baidu.com/') + // .on('response', function(response) { + // console.log(response.statusCode) // 200 + // console.log(response.headers) // 'image/png' + // }) + var params = req.body.params; var url = params.url; @@ -30,23 +38,27 @@ api.post('/getTitle', function(req, response) { } } request(options, function(err, res, body) { - var charset = "utf-8"; - var arr = body.toString().match(/]*?)>/g); - if (arr) { - arr.forEach(function(val) { - var match = val.match(/charset\s*=\s*(.+)\"/); - if (match && match[1]) { - if (match[1].substr(0, 1) == '"') match[1] = match[1].substr(1); - charset = match[1].trim(); - return false; - } - }) + var title = ''; + if (!err && response.statusCode == 200) { + var charset = "utf-8"; + var arr = body.toString().match(/]*?)>/g); + if (arr) { + arr.forEach(function(val) { + var match = val.match(/charset\s*=\s*(.+)\"/); + if (match && match[1]) { + if (match[1].substr(0, 1) == '"') match[1] = match[1].substr(1); + charset = match[1].trim(); + return false; + } + }) + } + var html = iconv.decode(body, charset); + var $ = cheerio.load(html, { + decodeEntities: false + }); + title = $("title").text(); } - var html = iconv.decode(body, charset); - var $ = cheerio.load(html, { - decodeEntities: false - }) - var title = $("title").text(); + console.log(title); response.json({ title: title || '',