te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Meteor.call checking array parameter - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Meteor.call checking array parameter - Stack Overflow

programmeradmin4浏览0评论

I am doing a Meteor.call('searchDatabase', keys...) that is executed whenever a user submits a search. I am currently passing an array of the words submitted called keys. However, I do not know how to do the necessary check(keys, ?) on the server side. I originally thought that I could do keys.forEach(function(element) { check(element, String)}, but i still get a Did not check() all arguments error. Should i just pass the submitted search as its original string in the Meteor method call and then break it up on the server? or is there a way to check that keys is an array?

I am doing a Meteor.call('searchDatabase', keys...) that is executed whenever a user submits a search. I am currently passing an array of the words submitted called keys. However, I do not know how to do the necessary check(keys, ?) on the server side. I originally thought that I could do keys.forEach(function(element) { check(element, String)}, but i still get a Did not check() all arguments error. Should i just pass the submitted search as its original string in the Meteor method call and then break it up on the server? or is there a way to check that keys is an array?

Share Improve this question asked Aug 9, 2015 at 17:19 thegreenfrogthegreenfrog 2254 silver badges10 bronze badges
Add a ment  | 

4 Answers 4

Reset to default 16

If keys is an array of strings, you can just do:

check(keys, [String]);

Your method would look something like:

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

In case it helps anybody else, I recast the answer from the Meteor forums to use arrow functions and avoid underscore and duplicate declarations:

check(subscriptions, Match.Where((myArray) => {
    myArray.forEach((myObject) => {
        /* do your checks and return false if there is a problem */
    });
    // return true if there is no problem
    return true;
}));

This checks an array of objects.

As shown here: https://forums.meteor./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;
}));

If you use simple-schema, you should try this way:

check( keys, [ mySchema ] );

You can learn more about check patterns in this link using-the-check-package

发布评论

评论列表(0)

  1. 暂无评论