[Nodejs] Nodejs, MongoDB, TwitterAPI 연동
업데이트:
1. server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const http = require('http');
const url = require('url');
const fs = require('fs');
//const db = require('./db.js');
const getTweet = require('./getTweet.js');
http.createServer((request, response) => {
const path = url.parse(request.url, true).pathname; // url에서 path 추출
if (request.method === 'GET') { // GET 요청이면
if (path === '/test') {
response.writeHead(200,{'Content-Type':'text/html'});
fs.readFile(__dirname + '/main.html', (err, data) => {
if (err) {
return console.error(err);
}
response.end(data, 'utf-8');
});
//
} else if (path === '/') { // 주소가 /이면
response.setHeader('Content-Type', 'text/html'); // header 설정
getTweet.getTweets(44196397, (tweets) => {
response.write(JSON.stringify(tweets));
//response.write(JSON.stringify(getTweet.getTweets(44196397).body));
response.end('the end!'); // 정보 탑재 후 브라우저로 전송
});
} else { // 매칭되는 주소가 없으면
response.statusCode = 404; // 404 상태 코드
response.end('주소가 없습니다');
}
}
}).listen(8080);
2. db.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* db.js */
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test2'); // 기본 설정에 따라 포트가 상이 할 수 있습니다.
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
console.log("mongo db connection OK.");
});
var testSchema = mongoose.Schema({
name: String
});
testSchema.methods.speak = function () {
var greeting = this.name
? "Meow name is " + this.name
: "I don't have a name"
console.log("speak() - " + greeting);
}
var TestModel = mongoose.model("TestModel", testSchema);
var testIns = new TestModel({ name: "testIns"});
testIns.save(function(err, testIns){
if(err) return console.error(err);
testIns.speak();
});
TestModel.find(function(err, models){
if(err) return console.error(err);
console.log("find() - "+models);
});
TestModel.find({name:/^testIns/});
3. getTweet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var request = require('request');
function getTweets(id, callback) {
let userId = id;
const url = `https://api.twitter.com/2/users/${userId}/tweets`;
const bearerToken = "트위터에서 받은 토큰";
const options = {
uri: url,
qs: {
max_results:5
},
headers: {
"User-Agent": "v2UserTweetsJS",
"authorization": `Bearer ${bearerToken}`
}
};
request(options, function(error, response, body){
if (!error && response.statusCode == 200) {
callback(body);
}
else {
callback(error);
console.log(error);
}
});
}
exports.getTweets = getTweets;
댓글남기기