Typescript 条件条件建筑猫鼬
每个文档都有一些日期,我希望能够对其进行排序和筛选。日期筛选应根据输入Typescript 条件条件建筑猫鼬,typescript,mongoose,Typescript,Mongoose,每个文档都有一些日期,我希望能够对其进行排序和筛选。日期筛选应根据输入sortBy应用 // ... var aFieldName = filters[i].fieldName; if (sortBy == filters[i].fieldName) { query.or([ {
sortBy
应用
// ...
var aFieldName = filters[i].fieldName;
if (sortBy == filters[i].fieldName) {
query.or([
{
aFieldName: {
这很有效
开始时,我成功地添加了条件。其中
:
// input examples
var fromUnixms, toUnixms; // some unix ms timestamps
var filters = ['createdAt', 'publishAt', 'publishFrom', 'publishTo'] // available date fields
var sortBy = 'createdAt'; // the field we want to sort on
// let's build a condition,
// looping through the sortable fields and filter based on what is sorted on
let query = model.find();
for (var i = 0; i < filters.length; i++) {
if (sortBy == filters[i].fieldName) {
query.where(filters[i].fieldName).gte(fromUnixms);
query.where(filters[i].fieldName).lte(toUnixms);
console.log("filtering on " + filters[i].fieldName
+ " between " + moment(fromUnixms)
+ " and " + moment(toUnixms);
}
}
}
query.sort(sortBy);
Typescript不允许对象中出现这样的键动态(过滤[i].fieldName
),表示点所在的位置需要一个:
提取到一个变量会编译,但不会命中:Mongoose可能会将其解释为我正在寻找一个名为“aFieldName”
的字段,而不是“createdAt”
,即sortBy
的值
// ...
var aFieldName = filters[i].fieldName;
if (sortBy == filters[i].fieldName) {
query.or([
{
aFieldName: {
Mustaches obv也不编译,但说明了我在这里尝试实现的目标:
query.or([
{
{{ filters[i].fieldName }} : {