Javascript 引用全局对象以将数据保存到数据库
我在Win7上运行,并且已经安装了nodeJS作为路径变量 我已经安装了一个nodeJs模块: 我得到的json元素如下: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
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。然后还可以省略该全局变量声明。