服务器回调中的Meteor插入集合无法正常工作

时间:2017-08-28 21:42:24

标签: javascript meteor meteor-collections

基本上,我正在尝试从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再次打印到控制台,但不会更新。

我做错了吗?

0 个答案:

没有答案