【问题标题】:Having trouble with handling meteor js client and server side interactions在处理流星 js 客户端和服务器端交互时遇到问题
【发布时间】:2017-01-18 20:40:09
【问题描述】:

我在代码中有以下场景,我从客户端调用一个函数,在服务器端该函数从 mongodb 集合中获取数据,然后我使用该数据使用 d3 js 生成条形图。但问题是我没有得到服务器到客户端的响应。我尝试了各种方法,例如future和fiber,但仍然没有解决。我对流星很陌生,因此感谢您的帮助。

这里是客户端函数,

Meteor.call("ok", function(error, r) {
    if (!error) {
    console.log(r.content);
    var len = Object.keys(JSON.parse(r.content)).length;
    var svg = d3.select("svg")
    var mySquare = new Array()
    var data = JSON.parse(r.content);
    data.forEach(function(d) {
    mySquare[d.data] = svg.append("rect").attr("x",60+ (d.data*20)).attr("y",45-d.height).attr("height",d.height).attr("width",15).style("fill","#f7f7f7");
            })
svg.selectAll("rect")
           .on("click", function(d){
              d3.select(this).transition(1000).style("fill", "#ff0000").duration(1000).transition(1000).style("fill", "#f7f7f7").duration(1000);
           })
            } else {
                console.log(error);
            };});

这是服务器端代码,

Meteor.methods({
    ok: function(options){
        Meteor.coll = new Mongo.Collection("test")
        return Meteor.coll.find().fetch();
    },});

请帮我解决这个问题并解释如何使用它以供进一步使用。

【问题讨论】:

    标签: javascript mongodb meteor d3.js


    【解决方案1】:

    Meteor 已经有一种从服务器获取数据的机制,称为订阅。

    您只需在服务器上声明集合,然后从客户端订阅它。您需要一个辅助函数来从 mongo 数据库中进行查询。

    这里有一篇文章解释了细节:https://www.discovermeteor.com/blog/understanding-meteor-publications-and-subscriptions/

    而且 Meteor 指南也有关于发布和订阅机制的信息:https://docs.meteor.com/api/pubsub.html

    【讨论】:

    • 谢谢米克尔。在问这个问题之前,我偶然发现了这个 URL,但我忽略了它。我编码了超过 12 个小时,所以我想我太累了,无法理解它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2016-06-14
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多