Ich habe eine eigene Datenbank mit Youtube Videos. Was es bisher enthält, ist die ID dieser bestimmten Videos; der, der auch in der Videoverbindung zu finden ist.Videoinfo in die Datenbank über die API einfügen
Ich suche nach einer Methode, die ich benutze, um sowohl den Titel als auch die Beschreibung von ihnen in die Datenbank mit Hilfe der Youtube API und MySQL einzufügen.
Durch die Verwendung von the mysql npm konnte ich mit der Datenbank verbinden, aber die asynchrone Natur verwirrt mich ein wenig.
Hier ist mein ursprünglicher (unvollständig) Code:
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);
};
});
};
});
Fragen:
1.), damit es funktioniert, eine andere connection.query
im request
notwendig wäre, aber da das auch asynchron arbeitet Ich bin ziemlich unsicher über das Ergebnis. Was ist der richtige Weg, um Elemente dieser Antwort in die Datenbank zu schreiben? Soll ich eine andere Art von Übung verwenden? Ist es möglich, dass das Schreiben der gesamten Logik innerhalb 'SELECT id FROM videos'
eine schlechte Idee war?
2.) habe ich versucht, die API-Verbindungen und sie im Browser gearbeitet, aber wenn der Code selbst läuft, request
wirft und Fehler, die aus der folgenden Meldung besteht:
{ [Error: connect ENOBUFS 216.58.214.202:443 - Local (undefined:undefined)]
code: 'ENOBUFS',
errno: 'ENOBUFS',
syscall: 'connect',
address: '216.58.214.202',
port: 443 }
Was die Quelle für diese ist Problem? (Wenn es rentabel ist eine andere Frage für sich allein zu sein, bin ich bereit, von der ursprünglichen Frage zu entfernen, da dies weniger der Teil der ursprünglichen Ausgabe ist)
Es half und gearbeitet, danke! –