Après beaucoup de bricolage et de recherche, je suis en mesure d'obtenir ce code tonwork. Cependant, il se sent sale et j'ai dû faire face à de nombreux problèmes car le nœud n'aime pas transmettre les données aux variables globales, y a-t-il une meilleure façon d'écrire cela? Je suis très novice en ce qui concerne les nœuds, alors j'ai l'impression de manquer des pièces qui auraient rendu ma vie beaucoup plus facile. Conformément à la suggestion @JordanHendrix, je vais passer aux littéraux de gabarit.Ma solution semble "laide"
var wikipedia = require("node-wikipedia");
var infobox = require('wiki-infobox');
var Promise = require('es6-promise').Promise;
var fs = require('fs');
String.prototype.format = function()
{
var content = this;
for (var i=0; i < arguments.length; i++)
{
var replacement = '{' + i + '}';
content = content.replace(replacement, arguments[i]);
}
return content;
};
function getLinks() {
return new Promise(function(resolve, reject) {
wikipedia.page.data("List_of_hip_hop_musicians", { content: true }, function(response) {
fs.writeFile("response.json", JSON.stringify(response, null, 2), function(err) {
if(err) {
return console.log(err);
}
});
resolve(response.links);
});
});
}
function getInfo(links){
return new Promise(function(resolve, reject) {
fs.appendFile("info.csv", "name, background, birth_name, birth_date, birth_place, origin, genre, occupation, instrument, years_active, label, website\n", function(err) {
if(err) {
return console.log(err);
}
});
for (i=0; i<10; i++) {
var link = links[i]['*'];
resolveInfo(link).then(function(newText){
fs.appendFile("info.csv", newText, function(err) {
if(err) {
return console.log(err);
}
});
});
}
resolve(text)
});
}
function resolveInfo(link) {
return new Promise(function(resolve, reject) {
infobox(link, 'en', function(err, data){
if (err) {
return console.log(err);
}
try {
var text = '{0}, {1}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}\n'.format(data.name.value, data.background.value, data.birth_name.value, data.birth_date.value, JSON.stringify(data.birth_place), data.origin.value, data.genre.text, JSON.stringify(data.occupation), data.instrument.text, data.years_active.value, data.label.value, data.website.value);
} catch(err){
var text = "";
}
resolve(text);
});
});
}
getLinks().then(function(links) {
getInfo(links).then(function(text){
});
});
pourquoi ne pas simplement utiliser ici littérales modèle, si vous ne savez pas ce qu'ils sont – JordanHendrix
@JordanHendrix probs 'littérales modèle de ES6 de Google parce que je Je n'ai jamais entendu parler du terme aujourd'hui. J'ai littéralement commencé à taper il y a quelques heures. Je viens d'un lourd fond Python et Go. Bien que je l'ai juste googlé et bien que cela semble être un bon remplacement pour le prototype de chaîne, cela n'aide pas avec le problème réel, où sur la ligne 66 console.log (texte) je ne vois pas les données que je m'attends. – reticentroot
ok cool, oui je pensais que vous pourriez ne pas savoir, jette un coup d'oeil, il va faire sens! https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals – JordanHendrix