基本上,我正在尝试从Poloniex获取一个wss feed,并用它更新一个集合,以便我可以拥有最新的'集合中的价格(我将更新并覆盖现有条目)并在网页上显示。现在,我得到了wss工作,我只是想在集合中插入一些数据,看看它是否有效,但它没有,我无法弄清楚原因!
注意:该集合有效,我已经手动插入了一个包含shell的记录。
以下是我现在的代码:
import { Meteor } from 'meteor/meteor';
import * as autobahn from "autobahn";
import { Mongo } from 'meteor/mongo'
import { SimpleSchema } from 'meteor/aldeed:simple-schema'
//quick DB
Maindb = new Mongo.Collection('maindb');
Maindb.schema = new SimpleSchema({
place: {type: String},
pair: {type: String},
last: {type: Number, defaultValue: 0}
});
Meteor.startup(() => {
var wsuri = "wss://api.poloniex.com";
var Connection = new autobahn.Connection({
url: wsuri,
realm: "realm1"
});
Connection.onopen = function(session)
{
function tickerEvent (args,kwargs) {
console.log(args[0]);
Maindb.insert({place: 'Poloniex', pair: args[0]});
}
session.subscribe('ticker', tickerEvent);
Connection.onclose = function () {
console.log("Websocket connection closed");
}
}
Connection.open();
});
控制台记录Feed但插入不起作用。
我在网上看了一下,它说要在一个非流星的时候让插入物工作。功能,您需要使用我所做的Meteor.bindEnvironment
:
我改变了
function tickerEvent (args,kwargs) {
console.log(args[0]);
Maindb.insert({place: 'Poloniex', pair: args[0]});
}
成了
var tickerEvent = Meteor.bindEnvironment(function(args,kwargs) {
console.log(args[0]);
Maindb.insert({place: 'Poloniex', pair: args[0]});
}); tickerEvent();
哪个不做任何事情 - 甚至不在我的控制台上打印Feed。使用相同的结构,但只是删除Meteor.bindEnvironment
再次打印到控制台,但不会更新。
我做错了吗?