我的node.js程序没有按照我期望的javascript方式工作

时间:2014-01-12 02:29:40

标签: javascript node.js

我已经使用javascript多年了,自从我开始进行Web开发工作以来,它已经相当不错了,但是在个人项目上使用node我遇到了问题。

我创建了一个对象

    ;( function( undefined ) {
    'use strict';

    var scrape = {
        data : {},
        scrapers: [],
        init : function( coins, exchanges, trade_paths ) {
            scrape.start_time = new Date().getMilliseconds();
            // Load events
            var Event = require( 'events' );
            // Add an eventEmitter to process
            process.event = new Event.EventEmitter()

            // Now we can load any modules, now that global process is modified ;)
            //require( './bter.js' );
            exchanges.forEach( function( exchange ) {
                console.log( exchange.name + '.js' );
                require( exchange.name.toLower() + '.js' );
            } );

            // Trigger the preload event
            process.event.emit( 'scraper::init', coins );

            // Response to all modules processes
            process.event.on( 'scraper::add', scrape.add );
        },
        add : function( module ) {
            scrape.data[module.name] = module.data;
        }
    };

    // Get list of exchanges, coins, and trade paths
    var sql_data = {
        sql : {},
        db : {},
        coins : [],
        exchanges : [],
        trade_paths : [],
        init : function() {
            sql_data.sql = require( 'mysql' );
            sql_data.db = sql_data.sql.createConnection( {
                host : '127.0.0.1',
                user : 'root',
                password : ''
            } );

            sql_data.db.connect();

            // Get coin list
            sql_data.db.query('SELECT * FROM `node`.`coins` WHERE active=true', function(err, rows, fields) {
                if( typeof rows !== 'undefined' ) {
                    sql_data.coins = rows;
                }
                // Oddly, if no error, its equal to null.
                if( err !== null ) {
                    console.log( err );
                }
            } );

            // Get exchange list
            sql_data.db.query( 'SELECT * FROM `node`.`exchanges` WHERE active=true', function( err, rows, fields ) {
                if( typeof rows !== 'undefined' ) {
                    sql_data.exchanges = rows;
                }
                if( err !== null ) {
                    console.log( err );
                }
            } );

            // Get trade paths
            sql_data.db.query( 'SELECT * FROM `node`.`trade_paths` WHERE active=true',     function( err, rows, fields ) {
                if( typeof rows !== 'undefined' ) {
                    sql_data.trade_paths = rows;
                }
                if( err !== null ) {
                    console.log( err );
                }
            } );

            // Close connection to the database
            sql_data.db.end();
        }
    };

    sql_data.init();

    // Start scraping
    scrape.init( sql_data.coins, sql_data.exchanges, sql_data.trade_paths );
} () );

object.x无法访问。甚至不在对象本身内。我不知道该怎么做或如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

在从mysql接收数据之前调用scrape.init函数。你需要在sql_data.init回调中调用它(你可以在第三个.query()中安全地调用它,因为每个连接按顺序执行mysql查询)。