Meteor 模板帮助程序中出现异常:错误:匹配错误

Meteor 模板帮助程序中出现异常:错误:匹配错误,meteor,minimongo,Meteor,Minimongo,我正在尝试从Meteor中的模板助手中使用比较器函数执行自定义排序 这是我的模板助手: Template.move_list.helpers({ assets() { return Assets.find({}, { sort: sortFunction }); } }); 下面是比较器函数: const sortFunction = function (doc1, doc2) { const barcodes = Session.get('barcodesArray');

我正在尝试从Meteor中的模板助手中使用比较器函数执行自定义排序

这是我的模板助手:

Template.move_list.helpers({
  assets() {
    return Assets.find({}, { sort: sortFunction });
  }
});
下面是比较器函数:

const sortFunction = function (doc1, doc2) {
  const barcodes = Session.get('barcodesArray');

  if (barcodes.indexOf(doc1.barcode) === -1 || barcodes.indexOf(doc2.barcode) === -1) {
    return 0;
  }

  let last = null;
  _.each(barcodes, function (barcode) {
    if (barcode === doc1.barcode) last = doc1.barcode;
    if (barcode === doc2.barcode) last = doc2.barcode;
  });

  return last === doc1.barcode ? 1 : -1;
}
错误

加载页面时,返回以下错误:

模板帮助程序中的异常:错误:匹配错误:匹配失败。其中之一,匹配。可能或匹配。可选验证

我在chrome中的
sortFunction
中设置了一个断点,但是该函数从未被输入,也从未到达断点

当然,当我删除
sort
时不会抛出错误

参考资料

此功能没有很好的文档记录,但以下是:

对于本地集合,您可以传递一个comparator函数,该函数接收两个文档对象,如果第一个文档排在第一位,则返回-1;如果第二个文档排在第一位,则返回1;如果两个文档都不在另一个文档之前,则返回0。这是MongoDB的Minimongo扩展

以及添加功能,以及测试中的示例代码:

c.find({},{sort:sortFunction})

有人能理解这个错误吗?

编辑:

这个问题应该在Meteor>=v1.3.3.1中解决

本地集合(即客户端和内存中的服务器端集合)将允许传递一个函数作为
sort
子句


错误来自
mongo
包,其中规范不允许
sort
作为函数

@mitar在
minimongo
包中更改了
LocalCollection
LocalCollection
是客户端上的
Mongo.Collection
对象(其
\u Collection
属性)的一部分,但是查询仍然根据原始
Mongo
规范进行检查。我认为这是一个bug,因为规范没有更新以反映更改

要克服这一点(同时),请使用函数accept子字段,以便
sort
值是一个对象:

var sortFunction=函数(x,y){
返回x-y;
};
c、 查找({},{sort:{a:sortFunction}});
或者改用
c.\u collection.find()
,这将起作用(据我所知),但它不会应用为集合定义的任何转换

var sortFunction=function(doc1、doc2){
返回doc2.a-doc1.a;
};
c、 _collection.find({},{sort:sortFunction});

问题现在应该得到解决。您有机会尝试吗?
var sortFunction = function (doc1, doc2) {
  return doc2.a - doc1.a;
};