Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 引用全局对象以将数据保存到数据库_Javascript_Node.js - Fatal编程技术网

Javascript 引用全局对象以将数据保存到数据库

Javascript 引用全局对象以将数据保存到数据库,javascript,node.js,Javascript,Node.js,我在Win7上运行,并且已经安装了nodeJS作为路径变量 我已经安装了一个nodeJs模块: 我得到的json元素如下: json: { channel: 'ticker.160', trade: { timestamp: 1418473296, datetime: '2014-12-13 07:21:36 EST', marketid: '160', topsell: { price: '0.000077

我在Win7上运行,并且已经安装了nodeJS作为路径变量

我已经安装了一个nodeJs模块:

我得到的json元素如下:

json:
    { channel: 'ticker.160',
      trade:
       { timestamp: 1418473296,
         datetime: '2014-12-13 07:21:36 EST',
         marketid: '160',
         topsell: { price: '0.00007723', quantity: '1.48685240' },
         topbuy: { price: '0.00007714', quantity: '38.89032927' } } }
    Price:  0.00007714 Quantity: 38.89032927 Timestamp: 1418473296
脚本中打印和保存数据的部分:

var data;
channel.bind("message", function(data) {
    console.log(data);
    this.data = data;
    console.log("Price: ", data.trade.topbuy.price,
            "Quantity:", data.trade.topbuy.quantity,
            "Timestamp:", data.trade.timestamp);
});


console.log(data);
/**
 * save data to db
 */

var trade  = {exchange      : 'crispy.com', 
        market_id           : 'ticker.160', 
        typeOfTransaction   : 'buy', 
        price               : data.trade.topbuy.price, 
        quantity            : data.trade.topbuy.quantity, 
        created_at          : data.trade.timestamp, 
        updated_at          : data.trade.timestamp  
};

var query = connection.query('INSERT INTO trades SET ?', trade, function(err, result) {

});
console.log(query.sql);
我想引用全局变量数据,因为我想稍后使用json对象将其保存到mysql数据库中

在运行mysql部分稍后获得的代码时,出现一个错误,即找不到全局对象:

$ node server.js
undefined

c:\xampp\htdocs\project\psher\node_modules\server.js:52
                price                           : data.trade.topbuy.price,
                                                      ^
TypeError: Cannot read property 'trade' of undefined
    at Object.<anonymous> (c:\xampp\htdocs\project\psher\node_mo
dules\server.js:52:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3
有什么建议我做错了什么


谢谢你的回答

这个数据=数据;不分配给全局数据变量,而是分配给调用处理程序的任何对象的.data属性-可能是通道。@Bergi Thx,请回答!你对我的问题提出了什么解决方案?实际上我不确定你想做什么。什么是频道,它从哪里获取消息?我希望稍后使用json对象的确切含义是什么?为什么不立即将其保存到db?看起来您的代码不仅受到错误赋值的影响,而且还受到@Bergi的影响。通道是pusher api的一个变量。如果我能立即将数据保存到数据库中,我完全可以。但是,我是js的新手,我完全不确定如何将save to db部分添加到我的channel方法中。在这种情况下,只需移动保存代码和使用数据的所有其他内容,例如事件回调中的console.log。然后还可以省略该全局变量声明。