Не удается сохранить ответ от EventEmitter в базу данных с NodeJS - PullRequest
0 голосов
/ 06 ноября 2011

У меня есть это приложение 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      
    };
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...