2015-08-09 8 views
5

Я делаю Meteor.call('searchDatabase', keys...), который выполняется всякий раз, когда пользователь отправляет запрос. В настоящее время я передаю массив слов, представленных под названием keys. Тем не менее, я не знаю, как сделать необходимый check(keys, ?) на стороне сервера. Первоначально я думал, что могу сделать keys.forEach(function(element) { check(element, String)}, но я все еще получаю ошибку Did not check() all arguments. Должен ли я просто передать отправленный поиск в качестве исходной строки в методе метода Meteor, а затем разбить его на сервере? или есть способ проверить, что ключи являются массивом?Meteor.call проверка параметра массива

ответ

13

Если keys массив строк, вы можете просто сделать:

check(keys, [String]); 

Ваш метод будет выглядеть примерно так:

Meteor.methods({ 
    searchDatabase: function(keys) { 
    check(keys, [String]); 
    // add other method code here 
    } 
}) 
+0

Да, вот что я искал! Благодаря! – thegreenfrog

0

Как показано здесь: https://forums.meteor.com/t/check-object-in-an-array/3355

var subscriptions = [ 
    {/* ... */}, 
    {/* ... */}, 
    {/* ... */} 
]; 

check(subscriptions, Match.Where(function(subscriptions){ 
    _.each(subscriptions, function (doc) { 
    /* do your checks and return false if there is a problem */ 
    }); 
    // return true if there is no problem 
    return true; 
})); 
0

Если вы используете simple-schema, вы должны попробовать таким образом:

check(keys, [ mySchema ]); 

Вы можете узнать больше о контрольных образцов в этой ссылке using-the-check-package

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