私はYoutubeビデオのデータベースを持っています。これまでに含まれているのは、これらの特定の動画のIDです。ビデオリンクでも見つかるものがあります。API経由でビデオ情報をデータベースに挿入
私はYoutube APIとMySQLを使用して、タイトルと説明をデータベースに挿入するための方法を探しています。
the mysql npmを使用すると、データベースに接続できましたが、非同期の性質が少し混乱します。
ここに私の元の(不完全な)コードです:
var request = require('request');
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : (this is secret)
database : 'video_db'
});
connection.query('SELECT id FROM videos', function(err, rows, fields) {
if (err) throw err;
for(i=0;i<rows.length-1;i++){
var APIkey = (this is also secret)
var videoid = rows[i].id;
//gets data of a single video
var API_URL = 'https://www.googleapis.com/youtube/v3/videos'
+ '?part=snippet'
+ '&id=' + videoid
+ '&key=' + APIkey;
request(API_URL, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(JSON.parse(body));
} else {
console.log(error);
};
});
};
});
質問:
1)それを動作させるためには、別のconnection.query
はrequest
以内に必要であろうが、それはまた、非同期で動作しますので、私は結果については確信しています。その応答の要素をデータベースに書き込む適切な方法は何ですか?私は別の種類のapporachを使うべきですか? 'SELECT id FROM videos'
の全体ロジックを書くことは悪い考えでしたか?
2)私はAPIのリンクを試してみましたが、彼らは、ブラウザで働いていますが、コード自体の実行時に、request
をスローし、次のメッセージで構成され、エラー、この源は何
{ [Error: connect ENOBUFS 216.58.214.202:443 - Local (undefined:undefined)]
code: 'ENOBUFS',
errno: 'ENOBUFS',
syscall: 'connect',
address: '216.58.214.202',
port: 443 }
問題? (独自に別の質問であることを実行可能かどうこれは、元の問題の一部の小さいとして、私は、元の質問から削除して喜んだ)
それは助けと働いていた、ありがとう! –