2016-02-06 5 views
0

У меня есть следующие публикации:Метеор публикации Исключение: Не проверял() все аргументы во время издателя при использовании aldeed: табличный

Meteor.publish('usersadmin', function() { 
    return Meteor.users.find({}, { fields: { "emails": 1, "roles": 1, "profile": 1 } }) 
}); 

и я отображая публикацию в следующей таблице с помощью aldeed:tabular:

TabularTables.UsersAdmin = new Tabular.Table({ 
     name: "User List", 
     collection: Meteor.users, 
     pub: "usersadmin", 
     allow: function(userId) { 
     return Roles.userIsInRole(userId, 'admin'); 
     }, 
     columns: [{ 
     data: "emails", 
     title: "Email", 
     render: function(val, type, doc) { 
      return val[0].address; 
     } 
     }, { 
     data: "roles", 
     title: "Roles", 
     render: function(val, type, doc) { 
      return val[0]._id; 
     } 
     }]); 

в таблице отображается хорошо, но в терминале сервера следующее исключение показывает вверх:

Exception from sub usersadmin id 2d7NFjgRXFBZ2s44R Error: Did not check() all arguments during publisher 'usersadmin' 

Что вызывает это?

ответ

0

Вы получаете эту ошибку, потому что вы должны проверить аргументы, переданные вашей usersadmin публикации функции с помощью check(value, pattern).

Реактивные DataTables, реализованный в пакете aldeed:tabular, передавать аргументы tableName, ids и fields функции публикации; поэтому возникает исключение.

Согласно documentation, вам необходимо позаботиться о следующих требований:

Your function:

  • MUST accept and check three arguments: tableName, ids, and fields
  • MUST publish all the documents where _id is in the ids array.
  • MUST do any necessary security checks
  • SHOULD publish only the fields listed in the fields object, if one is provided.
  • MAY also publish other data necessary for your table

Это должно исправить ошибку:

Meteor.publish('usersadmin', function(tableName, ids, fields) { 
    check(tableName, String); 
    check(ids, Array); 
    check(fields, Match.Optional(Object)); 
    return Meteor.users.find({}, {fields: {"emails": 1, "roles": 1, "profile": 1}}); 
}); 

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

  • Нет связанных вопросов^_^