У меня есть это приложение nodejs, которое выбирает каналы с какого-либо веб-сайта.
Подход к извлечению осуществляется с помощью источника событий с момента его подключения к потоковому API.
В любом случае, выборка работает, потому что я постоянно получаю журнал ответов из этого:
console.log(JSON.stringify(feeds));
Однако кажется, что сохранение результата в базе данных не работает.Хотя store_feeds
работает.
Я не уверен, что проблема в NodeJS или MongoDB, потому что, если я создаю цикл для ручного ввода объекта JSON в store_feeds
, я вижу, что база данных обновлена.
Код для цикла событий:
// Worker
var worker = setInterval(function(){
var q = "some query";
Feed.EventEmitter.once("feeds", function(feeds){
console.log(JSON.stringify(feeds));
store_feeds(JSON.stringify(feeds));
});
get_feeds(q);
console.log("\nWorker is running...\n");
}, 5000);
Это код для хранения каналов в MongoDB:
// Store
function store_feeds(feeds) {
var mongodb = require('mongodb');
var server = new mongodb.Server("IP_ADDRESS", 27017, {});
new mongodb.Db('test', server, {}).open(function (error, client) {
if (error) throw error;
var collection = new mongodb.Collection(client, 'feeds');
collection.insert(feeds, {safe:true},
function(err, objects) {
console.log("\nStoring Feed Results: " + feeds + "\n");
if (err) console.warn(err.message);
if (err && err.message.indexOf('E11000 ') !== -1) {
// this _id was already inserted in the database
}
});
});
}
Это код для генератора событий:
// Event Emitter
var Feed = (function(){
var eventEmitter = new events.EventEmitter();
return {
EventEmitter : eventEmitter, // The event broadcaster
latestFeed : 0 // The ID of the latest searched feed
};
})();