【问题标题】:Error invoking Method 'addNewDriveToSadranTable': Internal server error [500]调用方法“addNewDriveToSadranTable”时出错:内部服务器错误 [500]
【发布时间】:2017-01-18 05:55:11
【问题描述】:

我对 Meteor.Call 和方法有疑问。

我在方法代码中输入了console.log('test')。控制台显示它,我可以在一毫秒内看到集合中的新文档(然后它就消失了)。

可能是什么错误?

client/sidurEditor.js

Template.sidurEditor.helpers({
    showForSadran: function() {
        return ForSadranDrives.find({},{sort: {askedDate: 1, since: 1}});
    }

lib/methods.js

Meteor.methods ({
addNewDriveToSadranTable: function (askedDate, since, until, askedDrive, askedUser) {
    console.log('click');
    ForSadranDrives.insert({
        askedDate: askedDate,
        since: since,
        until: until,
        askedDrive: askedDrive,
        driveCar: "chooseCar",
        driveCarName: "car undefined",
        driveDriver: "driver undefined",
        askedUser: askedUser,
        askedNickName: Session.get('nickName'),
        onEditDriveRow: false
    });
    console.log('click2');
} });

collection/collections.js

ForSadranDrives = new Mongo.Collection('forsadrandrives');

【问题讨论】:

  • 会话在服务器上不可用,所以这可能是你的错误。将所有需要的数据作为参数发送到服务器。
  • @masterAM 如何将所有需要的数据作为参数发送到服务器?
  • 从您的客户端发送askedNickName 作为参数,就像发送askedDate 等一样。
  • @MasterAM 谢谢!!!这解决了我写它作为答案的问题(你写我作为评论)再次感谢!

标签: javascript meteor


【解决方案1】:

错误是我在方法中写了一个 Session...我把它放在 Meteor.call(...) 作为参数并且它运行得很好!!

感谢@masterAM 的评论和回答

现在看起来像这样:

client/navbar.js

            Meteor.call('addNewDriveToSadranTable',askedDate, since, until, askedDrive, askedUser, Session.get('nickName'));

lib/methods.js

Meteor.methods ({
addNewDriveToSadranTable: function (askedDate, since, until, askedDrive, askedUser, askedNickName) {
    console.log('click1');
    ForSadranDrives.insert({
        askedDate: askedDate,
        since: since,
        until: until,
        askedDrive: askedDrive,
        driveCar: "chooseCar",
        driveCarName: "אין רכב מוגדר",
        driveDriver: "אין נהג מוגדר",
        askedUser: askedUser,
        askedNickName: askedNickName,
        onEditDriveRow: false
    });
    console.log('click2');
}});

【讨论】:

    【解决方案2】:

    您看到的是 Meteor 的延迟补偿 - 记录被插入到本地数据库 (minimongo) 中,但在从服务器刷新数据库时消失。这很可能是因为您对数据的订阅丢失或您的过滤器正在排除数据。

    您可以通过在 mongo shell 中查找记录来检查,使用命令

    meteor mongo
    

    确保你的 cd 在项目目录中

    【讨论】:

    • 我不确定我应该怎么做,我把方法放在 Meteor.isServer 和 Meteor.isClient 之外我应该添加什么?或者你写的那个过滤器应该在哪里?
    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多