【问题标题】:Sorting by nested value in Meteor?按 Meteor 中的嵌套值排序?
【发布时间】:2015-11-22 06:44:10
【问题描述】:

我有以下功能:

function(field,order){
  if(field==="date"){
    return Tasks.find({},{sort:{createdAt:order}});
  }else{
    return Tasks.find({},{sort:{turtlelog.field:order}});
  }
}

第一个条件很好用。但是 else 主体不喜欢这种点表示法。

知道正确的符号是什么吗?

【问题讨论】:

  • 试试这个{sort:{turtlelog: {field: order}}}
  • 'turtlelog.field': order
  • 之前都试过了,都没有用。
  • 我尝试在一个新变量中执行 'turtlelog.'+field 但它不起作用。
  • This thread 可能会有所帮助。

标签: javascript mongodb meteor


【解决方案1】:

好的,我已经很接近了,但你们肯定帮了忙:

通过使用对象文字表示法,我无法评估字段参数。 我使用了以下内容:

function(field,order){
  console.log(field);
  console.log(order);
  if(field==="date"){
    return Tasks.find({},{sort:{createdAt:order}});
  }else{
    var orderString = order>0?"asc":"desc";
    var field='turtlelog.'+field;
    var sort = {sort:[field,orderString]}
    return Tasks.find({},sort);
  }
}

我对排序对象使用了另一种表示法,现在它可以工作了。

【讨论】:

  • 我正要为 else 子句提出这个建议:var o = {}; o[turtlelog[field]] = order; return Tasks.find({},{sort: o});。我很想知道这是否真的有效。
  • o['turtlelog.'+field] 代替 o[turtlelog[field]] 有效
猜你喜欢
  • 2016-05-04
  • 1970-01-01
  • 2013-01-08
  • 2017-12-31
  • 1970-01-01
  • 2021-12-03
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多