Ich arbeite an einem Service, der Foursquare für bestimmte Check-Ins jede Minute oder so abfragte und die Ergebnisse in einer NoSQL-Datenbank speichern/aktualisieren würde. Ist der beste Ansatz, eine http.request mit setInterval zu umbrechen und dann die chunked response mithilfe des Datenereignis-Emitters zu aggregieren? Ich plane, den Endemitter zu verwenden, um den JSON zu analysieren und in eine NoSQL DB zu schieben, wenn die Anforderung abgeschlossen ist. Gedanken?Umfrage REST-Service mit Node.js
Antwort
Es könnte bessere Möglichkeiten, aber ich endete nur mit Ereignis-Emitter, um die REST-Antwort wie folgt zu verarbeiten:
var fourSquareGet = {
host: 'api.foursquare.com',
port: 443,
path: '/v2/venues/search?ll=33.88,-119.19&query=burger*',
method: 'GET'
};
setInterval(function() {
var reqGet = https.request(fourSquareGet, function (res) {
var content;
res.on('data', function (chunk) {
content += chunk;
});
res.on('end', function() {
// remove 'undefined that appears before JSON for some reason
content = JSON.parse(content.substring(9, content.length));
db.checkins.save(content.response.venues, function (err, saved) {
if (err || !saved) throw err;
});
console.info("\nSaved from Foursquare\n");
});
});
reqGet.end();
reqGet.on('error', function (e) {
console.error(e);
});
}, 25000);
Allerdings bin ich mir nicht sicher, warum ich aus der parsen „undefiniert“ hatte JSON erhielt ich von foursquare.
Als ich auf ein ähnliches Problem stieß, verwendete ich eine ähnliche Technik und es funktionierte gut. Here's where I got the idea from. Hoffentlich hilft das ein bisschen.
Thx ... Ich glaube, ich auf dem gleichen Artikel aussah, aber es schien ein bisschen alt. – occasl
Ich habe die Antwort von @occasl fixiert und für Klarheit aktualisiert:
var https = require('https');
setInterval(function() {
var rest_options = {
host: 'api.example.com',
port: 443,
path: '/endpoint',
method: 'GET'
};
var request = https.request(rest_options, function(response) {
var content = "";
// Handle data chunks
response.on('data', function(chunk) {
content += chunk;
});
// Once we're done streaming the response, parse it as json.
response.on('end', function() {
var data = JSON.parse(content);
//TODO: Do something with `data`.
});
});
// Report errors
request.on('error', function(error) {
console.log("Error while calling endpoint.", error);
});
request.end();
}, 5000);
Für die Zukunft, nur meine Antwort bearbeiten und ich werde Ihre Änderungen akzeptieren, kein Problem. – occasl
- 1. RESTService Antwort
- 2. Consuming Spring Hateoas Restservice mit RestTemplate
- 3. Hauptgesichter knurren mit Umfrage
- 4. Sharepoint-Umfrage
- 5. Create StrawPoll.me Umfrage mit Knoten
- 6. PriorityQueue Umfrage
- 7. Sichere Umleitungs-URLs + Umfrage-Affe
- 8. So senden Sie eine Zeichenfolge an einen Restservice mit angularJS
- 9. Import Umfrage Frage Art der Antworten aus der Umfrage?
- 10. SharePoint Umfrage Frage Bestellung
- 11. Umfrage Statistik Diagramm Ideen
- 12. LimeSurvey API - Umfrage-Status
- 13. ROR: Routenproblem - Umfrage-Objekt
- 14. Fragen zur Handy-Umfrage
- 15. Umfrage Implementierung auf Linux vs Umfrage Implementierung auf Solaris
- 16. Erstellen Sie eine einzigartige Umfrage/Umfrage in PHP
- 17. ZMQ-Umfrage funktioniert nicht
- 18. Erstellen einer Umfrage mit jQuery - Beispiele?
- 19. Komet, lange Umfrage mit jquery Tutorial
- 20. asp.net Umfrage Fragebogen Engine
- 21. Python ACR122U Umfrage
- 22. Schienen: Modellierung Umfrage Antworten
- 23. Umfrage in Mysql
- 24. Facebook Umfrage basierend auf Bildern
- 25. Kann Spring RestService Lernprogramm in IntelliJ nicht erstellen
- 26. xe: restService keine Daten für Seite geladen wird
- 27. Multidimensionale Array/Erstellen einer Umfrage
- 28. Datenbankmodell Best Practices - also Umfrage
- 29. GAE Go und lange Umfrage?
- 30. odoo Umfrage Fragen Spalte Format
Der Grund, warum Sie 'undefiniert' analysieren müssen, ist, dass Sie 'content' nie initialisiert haben. Wenn, statt "var content;" Du hast "var content = '';" Sie müssen nichts abstreifen. (Wenn Sie eine Zeichenfolge 'foo' zu 'undefined' hinzufügen, erhalten Sie die Zeichenfolge 'undefinedfoo'.) –
Vielen Dank für das Hinzufügen. Ich endete das gleiche, aber ich glaube, ich habe es hier nie aktualisiert. Fühlen Sie sich frei zu bearbeiten meine Antwort – occasl