流星 - 插入失败:找不到方法 [英] Meteor - insert failed: Method not found

查看:48
本文介绍了流星 - 插入失败:找不到方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 Meteor 的 JS 文件有问题.当我尝试将任何数据插入数据库并反映在图表上时,我收到此错误插入失败:找不到方法".我试过直接从 db 中获取数据,但也没有用...提前谢谢.

I have a problem with my Meteor's JS file. I get this error "insert failed: Method not found" when I try to insert any data to the database and reflect on chart. I've tried fetching data directly from db that didn't work too... thanx in advance.

LinePeople = new Mongo.Collection("LinePeople");
function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

if (Meteor.isClient) {
    console.log("in LIne Client");

    //LinePeople = new Mongo.Collection(null);

    Template.linenvd3.rendered = function() {
        var chart = nv.models.lineChart()
            .margin({left: 80})  //Adjust chart margins to give the x-axis some breathing room.
            .useInteractiveGuideline(true)  //We want nice looking tooltips and a guideline!
            .transitionDuration(350)  //how fast do you want the lines to transition?
            .showLegend(true)       //Show the legend, allowing users to turn on/off line series.
            .showYAxis(true)        //Show the y-axis
            .showXAxis(true)        //Show the x-axis
        ;

        nv.addGraph(function() {
            chart.xAxis.axisLabel('Person number').tickFormat(d3.format('d'));
            chart.yAxis.axisLabel('Age (years)').tickFormat(d3.format('d'));
            d3.select('#lineChart svg').datum(
                [{ values: LinePeople.find().fetch(), key: 'Age' }]
            ).call(chart);
            nv.utils.windowResize(function() { chart.update() });
            return chart;
        });

        Deps.autorun(function () {
            d3.select('#lineChart svg').datum(
                [{ values: LinePeople.find().fetch(), key: 'Age' }]
            ).call(chart);
            chart.update();
        });
    };

    Template.linenvd3.events({
        'click #addDataButton': function() {

            console.log(" in line addButton");

            var age = getRandomInt(13, 89);
            var lastPerson = LinePeople.findOne({}, {fields:{x:1},sort:{x:-1},limit:1,reactive:false});
            if (lastPerson) {
                console.log(" in lastPerson.. if block");
                LinePeople.insert({x:(lastPerson.x + 1), y:age});
            } else {
                console.log(" in lastPerson.. else block");
                LinePeople.insert({x:1, y:age});
            }
        },
        'click #removeDataButton': function() {
            console.log(" in line removeButton");
            var lastPerson = LinePeople.findOne({}, {fields:{x:1},sort:{x:-1},limit:1,reactive:false});
            if (lastPerson) {
                LinePeople.remove(lastPerson._id);
            }
        }
    });
}

if (Meteor.isServer) {
    console.log("in line Server");

}

推荐答案

感谢您的帮助...我实际上是通过发布集合并授予它一些权限来使其工作的:

Thanks for the help... I actually got it worked by publishing the collection and giving it some permissions:

此代码放置在myapp/shared/collections.js"中.(将它们分开放置以处理我将为其他图形添加的所有其他集合)

This code is placed in "myapp/shared/collections.js". (Placed them separately to handle all the other collections which I would add for other graphs)

lineVar = new Meteor.Collection("linenvd3");
lineVar.allow({
         insert: function () {
         return true;
         },
         update: function () {
         return true;
         },
         remove: function () {
         return true;
         }
         });

这段代码放在myapp/server/publish.js"中

This code is placed in "myapp/server/publish.js"

Meteor.publish('line', function () {
           return lineVar.find();
           });

然后,这是经过修改的 Javascript,使其看起来更简单和全面.

Then, this is modified Javascript made look more simpler and comprehensive.

if (Meteor.isClient) {
Meteor.subscribe('line');
Template.linenvd3.rendered = function() {

    var chart = nv.models.lineChart()
      .margin({left: 80})
      .useInteractiveGuideline(true)
      .transitionDuration(350)
      .showLegend(true)
      .showYAxis(true)        //Show the y-axis
      .showXAxis(true)        //Show the x-axis
    ;

    nv.addGraph(function() {
          chart.xAxis.axisLabel('Person number').tickFormat(d3.format('d'));
          chart.yAxis.axisLabel('Age (years)').tickFormat(d3.format('d'));
          d3.select('#lineChart svg').datum(
            [{ values: lineVar.find().fetch(), key: 'Age' }]
          ).call(chart);
          nv.utils.windowResize(function() { chart.update() });
          return chart;
    });

    Deps.autorun(function () {
          d3.select('#lineChart svg').datum(
            [{ values: lineVar.find().fetch(), key: 'Age' }]).call(chart);
          chart.update();
    });
};
}

这篇关于流星 - 插入失败:找不到方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆