Mongoose没有将字符串解析为对象键

时间:2018-01-22 18:32:26

标签: javascript mongodb

我在ajax调用中将以下对象传递给Mongoose:

{category: 'name', direction: 1}

我正在使用Mongoose对查询结果进行排序,如下所示:

Site.find(query).sort(sortBy)

在此调用之前,我想从ajax调用中获取对象,正确格式化并插入查询中。我这样做:

let sortBy = {};    
let tmp = req.query['sortBy'];
sortBy.category = tmp["category"];
sortBy.direction = tmp["direction"];

然而,这给了我这个错误:

TypeError: Cannot read property 'toString' of undefined

当我安慰tmp时,我得到:

tmp {"category":"name","direction":1}

然而,当我控制掉tmp [“category”]和tmp [“direction”]时,我得到:

undefined undefined

为什么我不能将它解析为对象键?

更新:

以下解决方法效果很好,但我仍然感到困惑,为什么上面的代码没有:

var tmp = {};
var sortBy = {};

Object.keys(req.query).map(prop => {
  if (prop === 'direction') {
    tmp[prop] = parseInt(req.query[prop]);
  } else if (prop === 'category') {
    tmp[prop] = req.query[prop]
  }
});

sortBy = {[tmp.category]: tmp.direction};

为什么我需要这个tmp对象?

1 个答案:

答案 0 :(得分:0)

这个问题也发生在我身上。解决方案是定义模式中字段的定义,否则将是未定义的。