使用promise测试

This commit is contained in:
luchenqun 2016-11-07 22:46:50 +08:00
parent 82d6fbb99a
commit ebab715fc0
2 changed files with 98 additions and 18 deletions

68
database/db.js Normal file
View File

@ -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;

View File

@ -4,8 +4,9 @@ var crypto = require('crypto');
var http = require('http'); var http = require('http');
var https = require('https'); var https = require('https');
var cheerio = require('cheerio'); 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 client = mysql.createConnection({ var client = mysql.createConnection({
host: '127.0.0.1', host: '127.0.0.1',
user: 'lcq', user: 'lcq',
@ -17,6 +18,13 @@ var client = mysql.createConnection({
client.connect(); client.connect();
api.post('/getTitle', function(req, response) { 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 params = req.body.params;
var url = params.url; var url = params.url;
@ -30,23 +38,27 @@ api.post('/getTitle', function(req, response) {
} }
} }
request(options, function(err, res, body) { request(options, function(err, res, body) {
var charset = "utf-8"; var title = '';
var arr = body.toString().match(/<meta([^>]*?)>/g); if (!err && response.statusCode == 200) {
if (arr) { var charset = "utf-8";
arr.forEach(function(val) { var arr = body.toString().match(/<meta([^>]*?)>/g);
var match = val.match(/charset\s*=\s*(.+)\"/); if (arr) {
if (match && match[1]) { arr.forEach(function(val) {
if (match[1].substr(0, 1) == '"') match[1] = match[1].substr(1); var match = val.match(/charset\s*=\s*(.+)\"/);
charset = match[1].trim(); if (match && match[1]) {
return false; 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); console.log(title);
response.json({ response.json({
title: title || '', title: title || '',