2017-01-18 1 views
1

У меня проблема с Meteor.Call и методами.Ошибка при вызове Метод 'addNewDriveToSadranTable': Внутренняя ошибка сервера [500]

Я положил console.log('test') в код метода. Консоль показывает это, и я вижу новый документ в коллекции за миллисекунду (а затем он ушел).

какой может быть ошибка?

клиент/sidurEditor.js

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

Библиотека/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'); 
} }); 

коллекция/collections.js

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

Se ssion недоступен на сервере, так что это, вероятно, ваша ошибка. Отправьте все необходимые данные на сервер в качестве аргументов. – MasterAM

+0

@masterAM как я могу отправить все необходимые данные на сервер в качестве аргументов? –

+0

От вашего клиента отправьте 'askNickName' в качестве аргумента так же, как вы отправляете' askDate' и т. Д. – MasterAM

ответ

1

ошибка была, что я написал сессию внутри метод ... я поместил его в Meteor.call (...) в качестве аргумента, и он отлично работает!

благодаря @masterAM за комментарий и ответ

так смотрите теперь так:

клиент/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'); 
}}); 
0

То, что вы видите, это компенсация задержки Meteor - запись вставляется в локальный db (minimongo), но исчезает, когда происходит обновление базы данных с сервера. Скорее всего, потому, что ваша подписка на данные либо отсутствует, либо ваш фильтр исключает данные.

Вы можете проверить, посмотрев на записи в Монго оболочки, с помощью команды

meteor mongo 

Убедитесь, что компакт-диск находится в директории проекта

+0

Я не уверен, что мне делать, я помещаю методы вне Meteor.isServer и Meteor.isClient Что я должен добавить? или где должен быть тот фильтр, о котором вы писали? –

Смежные вопросы