This commit is contained in:
		
							
								
								
									
										55
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								index.js
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
// const { createServer } = require('http')
 | 
					const { createServer } = require('http')
 | 
				
			||||||
const closeWithGrace = require('close-with-grace')
 | 
					const closeWithGrace = require('close-with-grace')
 | 
				
			||||||
const dbPool = require('./src/db_pool')
 | 
					const dbPool = require('./src/db_pool')
 | 
				
			||||||
const apiResult = require('./src/api_result')
 | 
					const apiResult = require('./src/api_result')
 | 
				
			||||||
@@ -10,6 +10,7 @@ console.log('Starting ...');
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
async function doQuery() {
 | 
					async function doQuery() {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
 | 
					        // https://www.myanswersbook.com/
 | 
				
			||||||
        // from: https://love.163.com/webapp/special/answerbook/#/ask
 | 
					        // from: https://love.163.com/webapp/special/answerbook/#/ask
 | 
				
			||||||
        let result = await apiResult.query({
 | 
					        let result = await apiResult.query({
 | 
				
			||||||
            method: 'POST',
 | 
					            method: 'POST',
 | 
				
			||||||
@@ -85,7 +86,7 @@ function convertAnswerTxtToSql() {
 | 
				
			|||||||
    }).sort();
 | 
					    }).sort();
 | 
				
			||||||
    fs.writeFileSync('answer.sql', lines.join('\n'));
 | 
					    fs.writeFileSync('answer.sql', lines.join('\n'));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
convertAnswerTxtToSql();
 | 
					// convertAnswerTxtToSql();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 去重
 | 
					// 去重
 | 
				
			||||||
function removeDuplicate() {
 | 
					function removeDuplicate() {
 | 
				
			||||||
@@ -111,12 +112,58 @@ async function readSQLAndExecute() {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    console.log("done");
 | 
					    console.log("done");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
removeDuplicate();
 | 
					// removeDuplicate();
 | 
				
			||||||
// readSQLAndExecute();
 | 
					// readSQLAndExecute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
closeWithGrace({ delay: 1000 }, function (opts, cb) {
 | 
					// 随机取一条
 | 
				
			||||||
 | 
					async function getOne() {
 | 
				
			||||||
 | 
					    let sql = `SELECT * FROM answer ORDER BY RAND() LIMIT 1;`;
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        return await dbPool.query(sql);
 | 
				
			||||||
 | 
					    } catch (err) {
 | 
				
			||||||
 | 
					        console.error(err);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // dbPool.close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const server = createServer(async function (req, res) {
 | 
				
			||||||
 | 
					    if (closeWithGrace.closing) {
 | 
				
			||||||
 | 
					        res.statusCode = 503
 | 
				
			||||||
 | 
					        res.setHeader('Connection', 'close')
 | 
				
			||||||
 | 
					        res.end('try again later')
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    res.writeHeader(200, { 'Content-Type': 'text/plain;charset=utf-8' });
 | 
				
			||||||
 | 
					    // res.writeHeader(200, { 'Content-Type': 'text/html;charset=utf-8' });
 | 
				
			||||||
 | 
					    switch (req.url) {
 | 
				
			||||||
 | 
					        // http://localhost:3000/api/get
 | 
				
			||||||
 | 
					        case '/api/get':
 | 
				
			||||||
 | 
					            var resultArr = await getOne();
 | 
				
			||||||
 | 
					            var result = resultArr[0];
 | 
				
			||||||
 | 
					            // console.log(result);
 | 
				
			||||||
 | 
					            res.end(JSON.stringify({
 | 
				
			||||||
 | 
					                code: 200,
 | 
				
			||||||
 | 
					                msg: "success",
 | 
				
			||||||
 | 
					                data: result,
 | 
				
			||||||
 | 
					            }))
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            res.end(JSON.stringify({
 | 
				
			||||||
 | 
					                code: 404,
 | 
				
			||||||
 | 
					                msg: "Not Found",
 | 
				
			||||||
 | 
					                data: [],
 | 
				
			||||||
 | 
					            }))
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // console.log(Object.keys(req));
 | 
				
			||||||
 | 
					    console.log(req.url);
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					server.listen(3000)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					closeWithGrace({ delay: 500 }, function (opts, cb) {
 | 
				
			||||||
    console.log(opts, 'closing')
 | 
					    console.log(opts, 'closing')
 | 
				
			||||||
    isExit = true;
 | 
					    isExit = true;
 | 
				
			||||||
    dbPool.close();
 | 
					    dbPool.close();
 | 
				
			||||||
 | 
					    server.close();
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user